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

EC2 Ubuntu服务器连接报错“server refused our key”求助

解决EC2 Ubuntu服务器Putty连接“server refused our key”问题

嘿,我之前维护EC2上的Hadoop集群时也碰到过一模一样的状况——明明之前连接完全正常,断开后再用Putty就连不上了,还弹出密钥被拒的提示。结合你的场景,给你几个具体的排查和修复步骤:

1. 先通过AWS控制台登录服务器排查核心问题

因为Putty连不上,先借助AWS自带的登录方式(比如EC2 Instance Connect或者Session Manager)进入服务器shell,这是解决问题的关键第一步。

检查SSH相关文件的权限

SSH对文件/目录权限要求非常严格,哪怕权限太宽松都会直接拒绝密钥登录,执行以下命令逐一验证:

  • 检查ubuntu用户家目录权限:
    ls -ld /home/ubuntu
    
    输出必须是drwxr-xr-x(权限值755),如果不是,用命令修正:
    sudo chmod 755 /home/ubuntu
    
  • 检查.ssh目录权限:
    ls -ld /home/ubuntu/.ssh
    
    输出必须是drwx------(权限值700),修正命令:
    sudo chmod 700 /home/ubuntu/.ssh
    
  • 检查authorized_keys文件权限:
    ls -l /home/ubuntu/.ssh/authorized_keys
    
    输出必须是-rw-------(权限值600),修正命令:
    sudo chmod 600 /home/ubuntu/.ssh/authorized_keys
    

验证authorized_keys内容是否正确

打开authorized_keys文件,确认里面的公钥和你本地Putty使用的密钥对完全一致:

cat /home/ubuntu/.ssh/authorized_keys

你可以用Puttygen打开本地的.ppk文件,复制里面开头是ssh-rsa的公钥内容,和服务器上的内容对比,看是否被意外修改、删除或者追加了错误内容。

2. 检查SSH服务配置

打开SSH的配置文件/etc/ssh/sshd_config,确保以下关键配置项正确:

sudo nano /etc/ssh/sshd_config

重点确认:

  • PubkeyAuthentication yes (开启公钥认证功能)
  • AuthorizedKeysFile .ssh/authorized_keys (指定公钥文件的正确路径)
  • 没有DenyUsers ubuntu这类禁用ubuntu用户的配置;如果有AllowUsers,要确保ubuntu在允许列表内

修改后保存并重启SSH服务:

sudo systemctl restart sshd

3. 排除本地密钥文件问题

如果服务器端都没问题,试试重新生成Putty可用的密钥文件:

  1. 登录AWS控制台,找到你的EC2实例对应的密钥对,下载.pem格式的私钥文件(如果之前没备份的话)
  2. 打开Puttygen,点击Load选择下载的.pem文件(注意要选择“All Files”才能看到)
  3. 点击Save private key生成新的.ppk文件,再用这个新文件尝试Putty连接

4. 确认安全组规则

虽然这个问题大概率不是安全组导致的(如果是端口没开应该是连接超时,而非密钥拒绝),但还是确认一下EC2实例的安全组是否允许你的本地IP访问22端口,避免规则被意外修改。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:15:32