ssh远程连接错误

1. 事件信息

  • 主机别名:<HOST_ALIAS>
  • 目标地址:<SERVER_PUBLIC_IP>:22
  • 客户端:Windows OpenSSH (OpenSSH_for_Windows_9.5p2)
  • 登录用户:<SSH_USER>
  • 私钥文件:C:\Users\<LOCAL_USER>\Downloads\<KEY_FILE>.pem

2. 故障现象

  • 本地 SSH 报错:
    • kex_exchange_identification: Connection closed by remote host
    • Connection closed by <SERVER_PUBLIC_IP> port 22
  • 服务器日志(/var/log/auth.log)出现:
    • Connection reset by authenticating user <SSH_USER> ... [preauth]

3. 排查结论

  • sshd 服务正常运行,22 端口正常监听。
  • ufw 已放行 22 端口。
  • fail2ban 未安装(fail2ban-client: command not found)。
  • 连接失败发生在 preauth 阶段,即尚未进入正常密钥认证流程。
  • 次要问题:私钥文件 ACL 过宽时,OpenSSH 会拒绝使用该私钥(后已修正权限)。

4. 根因判断

  • 22 端口对公网开放,扫描流量较多,触发 SSH preauth 阶段连接不稳定/被重置。
  • MaxStartups 默认阈值在高扫描场景下容易导致正常连接被丢弃。

5. 修复动作

5.1 调整 SSH preauth 并发阈值

bash 复制代码
printf "MaxStartups 100:30:200\nLoginGraceTime 20\n" | sudo tee /etc/ssh/sshd_config.d/99-tune.conf
sudo sshd -t && sudo systemctl restart ssh

5.2 收敛 22 端口来源(只允许当前公网 IP)

bash 复制代码
sudo ufw delete allow 22
sudo ufw allow from <YOUR_PUBLIC_IP> to any port 22 proto tcp
sudo ufw status

5.3 本地私钥权限修正(Windows)

  • 仅保留当前用户、AdministratorsSYSTEM.pem 的访问权限。

6. 结果

  • 执行以上动作后,SSH 恢复可用,ssh <HOST_ALIAS> 可正常连接。

7. 防复发建议

  • 长期保持 22 端口最小来源白名单,不建议 Anywhere 全开放。
  • 若公网 IP 会变,考虑:
    • 使用堡垒机 / WireGuard / Tailscale;
    • 或使用云厂商安全组动态白名单。
  • 保留 99-tune.conf,并定期复查 auth.log 扫描强度。
相关推荐
小政同学1 小时前
【NFS故障】共享的文件无法执行
linux·运维·服务器
ch3nyuyu1 小时前
Ubuntu(乌班图)基础指令
linux·运维·网络
挽安学长2 小时前
保姆级教程,通过GACCode使用Claude Code Desktop!
运维·服务器
firstacui3 小时前
MGRE实验
运维·服务器·网络
白菜欣3 小时前
Linux —《开发三件套:gcc/g++、gdb、make/Makefile 全解析》
linux·运维
何中应4 小时前
Grafana如何给列表设置别名
运维·grafana·监控
MXsoft6184 小时前
运维的尽头,是把“救火”变成“算命”
运维
大卡片4 小时前
IO模型与并发服务器设计
运维·服务器·网络
莎士比亚的文学花园4 小时前
Linux驱动开发(1)——系统移植
linux·运维·服务器
志栋智能5 小时前
超自动化巡检:解锁运维数据的深层价值
运维·服务器·数据库·自动化