Putty登录Ubuntu提示Server refused our key问题咨询
问题触发原因
出现Server refused our key报错的核心原因是SSH服务端校验公钥失败,常见触发场景如下:
- 本地生成的
.pem密钥对应的公钥从未写入目标服务器对应用户的SSH授权文件,服务端根本没有信任你的密钥 - Puttygen转换私钥时操作错误,导出的
.ppk私钥和服务端存储的公钥不匹配 - 服务端SSH相关目录、文件的权限不符合安全要求,SSH服务出于安全机制主动拒绝密钥认证
- 登录用户名错误,或者目标用户未开启公钥登录权限(Ubuntu默认禁止root用户直接SSH登录)
- SSH服务配置错误,关闭了公钥认证开关
排查解决步骤
第一步:先拿到服务器的直连操作权限
如果你是本地自行生成的.pem文件,不是创建主机时在云平台控制台选择绑定、由平台自动注入公钥的密钥对,靠SSH是登不进去的。直接通过云平台提供的VNC网页终端/控制台远程连接进服务器,再做后续配置。
第二步:修正服务端密钥配置与权限
- 先确认登录用户存在,以常用的
ubuntu用户为例,执行id ubuntu,如果返回用户不存在就先通过useradd -m ubuntu创建用户。 - 依次执行以下命令修正SSH相关目录权限:
# 修正用户家目录权限,权限过宽会被SSH拒绝 chmod 755 /home/ubuntu # 不存在.ssh目录就新建 mkdir -p /home/ubuntu/.ssh # 给.ssh目录设置正确权限 chmod 700 /home/ubuntu/.ssh
- 回到本地打开Puttygen,加载你的
.pem文件,把窗口顶部「Public key for pasting into OpenSSH authorized_keys file」输入框里的一整行公钥内容完整复制下来。 - 回到服务器终端执行以下命令写入公钥,注意把命令里的
你的公钥内容替换成你刚才复制的完整字符串:
echo "你的公钥内容" > /home/ubuntu/.ssh/authorized_keys # 给授权文件设置正确权限 chmod 600 /home/ubuntu/.ssh/authorized_keys # 修正目录和文件的所有者为登录用户 chown -R ubuntu:ubuntu /home/ubuntu/.ssh
- 如果需要用
root用户登录,除了把公钥写入/root/.ssh/authorized_keys、把对应目录/文件权限设为700/600、所有者设为root之外,还要编辑/etc/ssh/sshd_config文件,找到以下两个参数修改为对应值:
PubkeyAuthentication yes PermitRootLogin prohibit-password
修改完成后执行systemctl restart sshd重启SSH服务生效。
第三步:修正本地Putty配置
- 回到Puttygen,确认加载
.pem没有报错后,直接点「Save private key」导出.ppk格式私钥,不要随意修改密钥类型、位数等参数。 - 打开Putty,在左侧菜单找到
Connection > SSH > Auth,在「Private key file for authentication」处选择刚才导出的.ppk文件。 - 回到Session配置页,主机名填
ubuntu@你的服务器公网IP(用root登录就填root@公网IP),端口默认填22,发起连接即可。
第四步:仍无法登录时的精准排查
在服务器终端执行tail -f /var/log/auth.log,同时本地用Putty发起一次连接,直接看实时日志输出的错误原因:
- 日志出现
bad ownership or modes for directory/xxx:对应路径的权限或所有者设置错误,按上述步骤重新修正即可 - 日志出现
Failed publickey for xxx from 你的本地IP:公钥不匹配,重新复制Puttygen里显示的完整公钥,覆盖写入服务端的authorized_keys文件 - 日志出现
PubkeyAuthentication no:回到sshd_config配置打开公钥认证开关,重启sshd服务
内容的提问来源于stack exchange,提问作者AKASH
相关产品推荐
相关产品推荐

