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 扫描强度。
相关推荐
2401_858286112 小时前
OS55.【Linux】理解信号量(不是信号)
linux·运维·服务器·计数器·信号量
SakitamaX3 小时前
KEEPALIVED介绍与实验与介绍
运维·keepalived
楼田莉子5 小时前
Linux学习:线程的同步与互斥
linux·运维·c++·学习
小草儿7995 小时前
PG18备份恢复
linux·运维·服务器
Mikowoo0075 小时前
KaLi系统基本使用
运维·服务器
Starry_hello world6 小时前
Linux http代码
linux·运维·http
wuxi_joe8 小时前
中国装备制造企业如何出海:以“配置管理”为核心构建全球竞争力
运维·人工智能·制造
开开心心_Every8 小时前
全屏程序切换工具,激活选中窗口快速切换
linux·运维·服务器·pdf·ocr·测试用例·模块测试
星星乘坐的船9 小时前
Centos7.9系统下docker安装
运维·docker·容器