SSH连接报错求助:Permission denied (publickey)及连接重置问题
咱们来一步步捋你遇到的这两个SSH连接问题,都是日常运维里常碰到的情况:
第一个报错:
Permission denied (publickey) 这个报错的核心是服务器拒绝了你的身份认证请求,常见原因有这些:
- 服务器禁用了密码登录,只允许公钥认证:不少服务器为了加固安全,会关掉密码登录选项。如果你的本地公钥没上传到服务器的
~/.ssh/authorized_keys文件里,就会被直接拒绝。 - 本地SSH配置强制优先用公钥:你的
~/.ssh/config文件里,可能针对这个服务器设置了默认用公钥认证,但你要么没有对应的私钥,要么私钥的权限不对。 - 密钥文件权限不符合要求:本地私钥(通常是
id_rsa)的权限必须设为600,服务器端的authorized_keys权限得是600,.ssh目录权限要设为700——权限太宽松的话,SSH会直接判定密钥不安全,拒绝使用。 - 公钥未正确上传到服务器:可能你之前没传过公钥,或者上传时路径写错了(比如传到了其他用户的目录下)。
第二个报错:
ssh_exchange_identification: read: Connection reset by peer 添加端口后出现这个报错,说明连接根本没走到认证环节就被断开了,常见原因:
- 指定的端口不对:服务器的SSH服务根本没在你指定的这个端口上监听,自然会重置连接。
- 防火墙拦截:不管是服务器端的防火墙(比如ufw、iptables)还是你本地的防火墙,都可能把这个端口的连接请求给拦截了,导致连接中途断开。
- SSH服务异常:服务器上的SSH服务可能没启动、配置错了监听端口,甚至已经崩溃了,没法正常响应你的连接请求。
- 网络链路问题:你的网络到服务器之间的路由出了问题,或者服务器所在的主机本身有网络故障,导致连接被重置。
快速排查建议
- 先确认SSH服务的正确端口:找服务器管理员确认,或者如果之前成功连接过,查本地
~/.ssh/config里的配置。 - 修复公钥认证问题:如果还没生成密钥,先在本地执行
ssh-keygen生成;然后用ssh-copy-id -p 正确端口 username@ipaddress把公钥传到服务器。 - 修正密钥权限:本地执行
chmod 600 ~/.ssh/id_rsa,服务器端执行chmod 700 ~/.ssh和chmod 600 ~/.ssh/authorized_keys。 - 检查防火墙设置:服务器端用
ufw status(或者iptables -L)确认指定端口是允许的;本地也检查下自己的防火墙有没有拦截这个端口的出站请求。 - 验证SSH服务状态:服务器端执行
systemctl status sshd(部分系统是systemctl status ssh),看服务是否正常运行,监听的端口是否正确。
内容的提问来源于stack exchange,提问作者Amin Ahmadi
相关产品推荐
相关产品推荐

