马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
ssh 连不上时,终端冒一句 ssh_exchange_identification: read: Connection reset by peer 是最让人懵的报错之一——它只是说「对端在读我们身份交换阶段把连接重置了」,既不指方向也不指原因。结合另外一条常见提示 Permission denied (publickey,keyboard-interactive,hostbased),基本可以把问题收敛到两处:源地址被限、认证方式不匹配。本文给出定位路径与一份 sshd_config 参数速查。
一、先分清这两条报错
- ssh_exchange_identification: read: Connection reset by peer:多出现在源地址限制场景——服务端把你的 IP 拉黑(/etc/hosts.deny、fail2ban、pam_access),sshd 在交换阶段就把 socket 复位;
- Permission denied (publickey,keyboard-interactive,hostbased):认证方式不匹配——服务端启用了 keyboard-interactive,而你的客户端只提供了 password / publickey。
快速判断方向:ssh -v user@host 加详细日志 。能在「Authenticated」前就断,多半是前者;能打印认证方法列表后失败,基本是后者。再加一层保险:ssh -vvv 看服务端返回的精确阶段。
二、解法一:对齐认证方式(最常见)
进服务端改 /etc/ssh/sshd_config,把 AuthenticationMethods 注释掉回到默认,或者显式写成与你客户端一致的方式:
sudo vi /etc/ssh/sshd_config
# AuthenticationMethods publickey keyboard-interactive
systemctl reload sshd
注意 Linux 下同一个配置项重复写,只有第一条生效。改完必须 reload 才生效,而且验证是否生效要查实际解析结果:
sshd -T | grep -i passwordauthentication
sshd -T | grep -i pubkeyauthentication
这一步能同时排掉「配了没生效」这个假故障——很多人改完直接重试,还是老报错,其实指令行只有第一条管用。
三、解法二:处理源地址限制
逐项核对(改完一个 reload 一个,别一次全改):
grep -vE "^#|^$" /etc/hosts.deny /etc/hosts.allow
sudo fail2ban-client status sshd
sudo grep sshd /var/log/secure | tail -20
如果是 fail2ban 误封(比如你跑了扫描脚本),解封用 fail2ban-client set sshd unbanip <IP>。生产机器务必先确认来源 IP 再解封,别顺手把别人挡在门外。
四、六种认证方式速查
sshd_config 里这些方式既要写进 AuthenticationMethods,也要显式开启(例如 PasswordAuthentication yes),只配一个是不生效的:
- gssapi-with-mic(
GSSAPIAuthentication yes):配合 Kerberos 的强认证与单点登录,企业域环境常见,安全性高;
- hostbased(
HostbasedAuthentication yes):基于主机密钥,依赖密钥分发管理,不推荐在不可信网络使用;
- keyboard-interactive(
KbdInteractiveAuthentication yes):交互式输入(验证码、二次口令一类),安全性取决于实现;
- none(
PermitEmptyPasswords yes):空密码登录,生产环境必须禁用;
- password(
PasswordAuthentication yes):普通口令,安全性取决于密码强度,明文链路下存在中间人风险;
- publickey(
PubkeyAuthentication yes):公钥认证,安全性与便利性最佳,默认首选。
日常运维结论很明确:能用公钥就别用口令,尤其面对公网机器。
五、UsePAM 这个坑
UsePAM 打通 PAM 的账户与会话模块处理所有认证类型;设为 yes 时会同时启用 KbdInteractiveAuthentication 与 PasswordAuthentication 的 PAM 认证。因为 PAM 的 keyboard-interactive 通常和口令认证扮演同一角色,同时开着建议禁用其中一个。
另外两个硬约束:UsePAM yes 时无法以非 root 身份运行 sshd;它默认就是 no,并且从 OpenSSH 9.x 左右开始已不支持 UsePAM 参数,老资料照抄会在新版本上直接报 unknown keyword。
六、排错顺序(照着走)
ssh -vvv user@host 定阶段;
- 服务端
systemctl status sshd、journalctl -u sshd 看拒绝原因;
- 查
/etc/hosts.deny、fail2ban、pam_access;
- 对齐
AuthenticationMethods 与客户端可用方式;
sshd -T | grep ... 验证实际生效值;
sshd -t 先做配置语法自检,再 reload。
七、小结
回到那句难懂的 reset by peer:它不是原因,只是「连接在识别阶段被掐断」。把 ssh -vvv 的断点和 Permission denied (publickey,keyboard-interactive,hostbased) 的认证方法列表对上,问题几乎一定落在源地址限制或认证方式不对齐这两处。改 sshd_config 时牢记两点:重复项只有第一条生效、改完 reload 并用 sshd -T 核对。日常安全基线就一句:公钥登录 + 禁空密码 + 公网机器别开口令。
qidao123.com企服评测-应用市场 编辑提示 |