引言:密钥登录为何“失灵”
不少使用 FinalShell 的用户在配置 SSH 密钥登录时,会遇到一个奇怪的现象:明明已经在服务器上放置了公钥,本地也生成了私钥,但连接时 FinalShell 依然弹出密码输入框,甚至直接提示“密码错误”。这种问题并非个例,通常与密钥文件权限、SSH 服务端配置或客户端设置有关。本文将从常见原因入手,给出逐步排查的方法,帮助你在不借助外部工具的情况下,让密钥登录真正生效。
原因一:公钥未正确追加到 authorized_keys
最常见的错误是将公钥内容直接覆盖写入 ~/.ssh/authorized_keys,而不是追加。如果该文件原本已有其他公钥,覆盖后会导致原有密钥失效,而新密钥也可能因格式问题无法识别。正确做法是:
- 使用 ssh-copy-id 命令(如果服务器支持)自动追加;
- 手动执行 echo “公钥内容” >> ~/.ssh/authorized_keys,注意使用双尖括号追加,而非单尖括号覆盖;
- 检查文件内容是否完整,通常以 ssh-rsa 或 ecdsa-sha2-nistp256 开头,结尾无多余空格或换行。
另外,确保 authorized_keys 文件位于对应用户的家目录下,且路径正确。如果你使用 root 登录,则路径为 /root/.ssh/authorized_keys。
原因二:文件权限过于宽松
SSH 服务对密钥相关文件的权限非常敏感。如果 .ssh 目录或 authorized_keys 文件权限过大(例如其他用户可写),sshd 会出于安全考虑拒绝使用密钥认证,转而要求密码。检查并修正权限:
- 家目录权限:chmod 700 ~(或至少 755,但 700 更安全);
- .ssh 目录权限:chmod 700 ~/.ssh;
- authorized_keys 权限:chmod 600 ~/.ssh/authorized_keys。
在 FinalShell 中,如果你将私钥放在 Windows 或 macOS 本地,也需注意私钥文件权限。Windows 下一般无需特殊设置,但若使用 WSL 或 Git Bash,可能需执行 chmod 600 私钥文件。
原因三:SSH 服务端配置未开启密钥认证
即使公钥和权限都正确,如果 sshd_config 中禁用了 PubkeyAuthentication,一切也是徒劳。登录服务器,编辑 /etc/ssh/sshd_config,确认以下两行未被注释且值正确:
PubkeyAuthentication yes
PasswordAuthentication no
注意:修改后需重启 SSH 服务(例如 systemctl restart sshd 或 service ssh restart)。另外,某些云服务器厂商可能默认在安全组中限制了密钥登录,但这种情况较少见,更多是配置问题。如果同时启用了 AuthorizedKeysFile 自定义路径,请确保该路径与你的公钥存放位置一致。
原因四:FinalShell 客户端设置或私钥格式问题
FinalShell 在创建连接时,需要在“认证”选项卡中选择“公钥”方式,并指定私钥文件。容易忽略的是:
- 私钥格式必须为 OpenSSH 格式(以 BEGIN OPENSSH PRIVATE KEY 开头)。如果你用 PuTTYgen 生成的是 .ppk 格式,需先转换为 OpenSSH 格式;
- 检查私钥是否被密码保护(Passphrase)。如果设置了私钥密码,连接时仍会提示输入该密码,而非服务器密码——这容易造成误解;
- 在 FinalShell 的“高级”设置中,确认未勾选“每次连接时询问密码”或类似选项。
另外,如果你在服务器上使用了 SELinux,可能需要调整上下文,但普通用户很少遇到,暂不展开。
实用建议:快速定位问题
当以上步骤都检查后仍无法解决,可以尝试以下方法:
- 在服务器端查看 SSH 日志,例如 tail -f /var/log/auth.log(Debian/Ubuntu)或 journalctl -u sshd(CentOS/RHEL),观察连接时是否有“Authentication refused”或“bad permissions”等提示;
- 使用命令行直接连接测试:ssh -i 私钥文件 用户@服务器IP,如果命令行成功而 FinalShell 失败,则问题出在客户端配置;
- 临时将 PasswordAuthentication 设为 yes 并重启 sshd,确认密钥能通过后,再改回 no——注意保持测试环境安全;
- 如果服务器有多个用户,确认你登录的用户与公钥所属用户一致,不要用 A 用户的密钥登录 B 用户。
结语
FinalShell 密钥登录提示密码,通常不是单一原因,而是多个环节叠加。建议按“公钥追加 → 权限修正 → sshd 配置 → 客户端设置”的顺序依次排查,每一步都验证一次。多数情况下,问题出在权限或公钥文件格式上。保持耐心,逐步定位,密钥登录的安全性和便捷性就能真正发挥出来。希望本文能帮你节省时间,顺利解决问题。

评论(0)