很多人第一次给 Finalshell 配置密钥,卡住的地方往往不在软件本身,而在“公钥到底放哪、私钥该选哪个文件”。下面这套流程从生成密钥开始,按顺序做完就能用密钥登录,并且在成功之前一直保留密码登录这条后路。
动手前先分清三个角色
- 私钥:留在你自己的电脑上,绝不外传,Finalshell 连接时读取的就是它。
- 公钥:由私钥派生,放到目标服务器的 ~/.ssh/authorized_keys 里。
- 口令(passphrase):给私钥再加一层保护,可以为空,但公网服务器建议设置。
顺带提醒,Finalshell 只认 OpenSSH 格式的私钥(id_rsa、id_ed25519 这一类),PuTTY 的 .ppk 文件不能直接用,需要先转换。
第一步:在本地生成密钥对
Windows 打开 PowerShell 或 CMD,macOS 与 Linux 打开终端,执行:
ssh-keygen -t ed25519 -C "finalshell-办公笔记本"
连续回车即可,默认保存在用户目录下的 .ssh 文件夹。Windows 一般在 C:\Users\你的用户名\.ssh\,会得到 id_ed25519(私钥)和 id_ed25519.pub(公钥)两个文件。如果老服务器不支持 ed25519,把参数换成 -t rsa -b 4096。
提示设置 passphrase 时输入两次相同内容;想省事可以直接回车留空,但对外网开放的服务器不建议留空。
第二步:把公钥放到服务器上
最省事的办法是在终端执行 ssh-copy-id -i ~/.ssh/id_ed25519.pub 用户名@服务器IP,按提示输入一次密码即可。
没有 ssh-copy-id(Windows 上常见)就手动做:
- 用文本编辑器打开 id_ed25519.pub,整行复制,注意别带多余换行和空格。
- 用密码方式登录服务器,执行 mkdir -p ~/.ssh,再编辑 ~/.ssh/authorized_keys,把公钥粘贴进去,一行一把钥匙。
- 依次执行 chmod 700 ~/.ssh 和 chmod 600 ~/.ssh/authorized_keys,权限过宽会被 SSH 直接拒绝。
- 服务器若开了 SELinux,补一条 restorecon -R -v ~/.ssh,否则同样可能认证失败。
第三步:在 Finalshell 里切换认证方式
- 在会话列表找到目标连接,右键选择编辑,或双击打开连接设置。
- 把认证方式从“密码”改为“密钥”。
- 点击私钥路径的选择按钮,定位到 .ssh 目录下的 id_ed25519,注意选没有 .pub 后缀的那个文件。
- 如果私钥设了口令,在密码或口令栏填写;没设就留空。
- 端口保持 22,改过端口的按实际填写,保存后双击连接。
连接成功时,终端不会再提示输入密码,而是直接落到命令行,说明公钥认证已经生效。
第四步:不成功时的排查顺序
- 看提示语:出现 Permission denied (publickey),多半是公钥没写进去或权限不对;仍提示输入密码,说明服务器还在走密码认证。
- 核对用户名:密钥绑定到具体账号,root 的公钥对普通用户无效。
- 核对私钥文件:选错成 .pub 文件是最常见的失误。
- 查服务器日志:/var/log/secure(CentOS 系)或 /var/log/auth.log(Debian 系)会写明拒绝原因。
- 确认 sshd 允许公钥登录:PubkeyAuthentication yes,改完重启 sshd。
第五步:确认无误后再关闭密码登录
这一步别急。先用新开的窗口测试密钥登录,成功后再编辑 /etc/ssh/sshd_config,把 PasswordAuthentication 改为 no 并重启服务。同时备份一份私钥到安全位置,或导出一份加密副本——私钥丢了,服务器就只能走控制台救援。
几个容易忽略的细节
- 私钥别放在同步网盘或聊天记录里,需要转移时用加密压缩包。
- 多人共用一台服务器时一人一把密钥,在 authorized_keys 行尾注释写清归属,方便日后清理。
- 换了电脑或重装系统,旧密钥不会自动跟过来,提前导出或在服务器上补登新公钥。
- 给连接配好会话备注,过几个月回头看还能分清哪把钥匙对应哪台机器。
按这五步走完,Finalshell密钥登录怎么设置就不再是难题:本地生成、公钥上机、软件里选对私钥、验证通过后再收紧密码登录。顺序不乱,问题基本都能自己定位。