You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用自定义PEM私钥连接服务器时需输入未知服务器密码的问题

解决SSH密钥连接却要求服务器密码的问题

看起来你遇到的核心问题是SSH没有正确使用你提供的PEM私钥进行认证,反而 fallback 到了密码登录。咱们一步步来排查解决:

1. 连接时明确指定你的私钥文件

很多时候SSH会默认去~/.ssh目录找id_rsa、id_ecdsa这类默认命名的密钥,不会自动识别当前目录的private.pem。所以你需要手动指定密钥文件路径:

ssh -i /绝对路径/到你的/private.pem 你的用户名@服务器IP或域名

如果你的私钥设置了passphrase,这时候应该会提示你输入这个passphrase,而不是服务器的密码。

2. 验证私钥与服务器公钥的匹配性

确保本地私钥对应的公钥,已经正确添加到服务器的~/.ssh/authorized_keys文件中:

  • 先在本地生成私钥对应的公钥字符串:
ssh-keygen -y -f /绝对路径/到你的/private.pem
  • 把输出的公钥字符串,和服务器上~/.ssh/authorized_keys里的条目对比,确保完全一致(没有多余空格、换行或者拼写错误)。

3. 检查本地和服务器的权限设置

权限不对是SSH密钥认证失败的常见原因:

  • 本地私钥private.pem必须设置为600权限(只有你自己能读写):
chmod 600 /绝对路径/到你的/private.pem
  • 服务器端的~/.ssh目录权限要设为700,authorized_keys文件权限设为600:
# 在服务器上执行
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

4. 检查服务器的SSH配置(需能登录服务器)

如果上面的步骤都没问题,可能是服务器的SSH服务禁用了公钥认证:

  • 登录服务器后,打开/etc/ssh/sshd_config文件,确保以下配置项正确:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
  • 修改后重启SSH服务(不同系统命令略有不同):
# Ubuntu/Debian
sudo service ssh restart
# CentOS/RHEL
sudo systemctl restart sshd

5. 用verbose模式排查细节

如果还是不行,用-v参数开启调试模式,看具体哪里出错:

ssh -v -i /绝对路径/到你的/private.pem 你的用户名@服务器IP或域名

看输出里的debug信息,比如有没有出现Offering public key:(说明SSH尝试用你的私钥),如果后面跟着Server refused our key,那就是密钥不匹配或者服务器配置拒绝了;如果根本没加载你的私钥,那就是路径指定错了。


内容的提问来源于stack exchange,提问作者user1971988

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:43:12