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/ubuntudrwxr-xr-x(权限值755),如果不是,用命令修正:sudo chmod 755 /home/ubuntu - 检查
.ssh目录权限:
输出必须是ls -ld /home/ubuntu/.sshdrwx------(权限值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可用的密钥文件:
- 登录AWS控制台,找到你的EC2实例对应的密钥对,下载
.pem格式的私钥文件(如果之前没备份的话) - 打开Puttygen,点击
Load选择下载的.pem文件(注意要选择“All Files”才能看到) - 点击
Save private key生成新的.ppk文件,再用这个新文件尝试Putty连接
4. 确认安全组规则
虽然这个问题大概率不是安全组导致的(如果是端口没开应该是连接超时,而非密钥拒绝),但还是确认一下EC2实例的安全组是否允许你的本地IP访问22端口,避免规则被意外修改。
内容的提问来源于stack exchange,提问作者Ali Fani
相关产品推荐
相关产品推荐

