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)

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

6. 结果

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

7. 防复发建议

  • 长期保持 22 端口最小来源白名单,不建议 Anywhere 全开放。
  • 若公网 IP 会变,考虑:
    • 使用堡垒机 / WireGuard / Tailscale;
    • 或使用云厂商安全组动态白名单。
  • 保留 99-tune.conf,并定期复查 auth.log 扫描强度。
相关推荐
Lsetea6 小时前
curl报58 unable to set private key file:客户端证书与私钥加载排查
运维·https·ssl证书·openssl·curl
天远Date Lab6 小时前
零信任架构实战:基于天远学籍核验三要素构建自动化竞赛资格审查网关
运维·人工智能·架构·自动化
Lsetea6 小时前
OpenSSL报certificate is not yet valid:error 9与notBefore时间排查
linux·运维·https·ssl证书·openssl
魔法阵维护师6 小时前
Linux 命令行入门踩坑记录:从 VMware 装系统到文件管理
linux·运维·服务器
飞飞传输6 小时前
业务系统文件安全检测怎么做?生物医药企业选型与建设指南
大数据·运维·安全
姜鱼问生7 小时前
docker exec 排查容器问题:从日志到进程
运维·网络·数据库·docker·容器
qq_543447827 小时前
DNS解析怎么排查?故障处理与运维实用手册
运维·服务器·网络·php
DeviceHub7 小时前
AI服务器电源设计进阶:TLVR电感的应用解析与选型验证指南
运维·服务器·人工智能
Apipi*7 小时前
30天速通Linux 第七章进程间通信
linux·运维·服务器
迪康软件zz7 小时前
终端审批体系怎么搭?从模板配置到业务连续性
运维·安全·自动化运维