"Connection closed by remote host" 是什么意思
服务器接受了你的连接,然后主动把它断开。这正是和 refused(没人在听)、timed out(完全没回应)的关键区别:这里有东西应答了,然后挂断。各种变体——Connection closed by remote host、Connection reset by peer、kex_exchange_identification: Connection closed by remote host——几乎总是其中之一:你被 fail2ban 封了、服务器 sshd 在重启/过载、或撞上了连接数上限。
原因,按可能性排序
| # | 原因 | 蛛丝马迹 |
|---|---|---|
| 1 | 失败登录后被 fail2ban / 封 IP | 昨天还好,今天几次失败尝试后就死了 |
| 2 | sshd 在重启或刚重启 | 服务器在重启;过一会儿就好 |
| 3 | 连接太多(MaxStartups) | 繁忙服务器,负载下间歇性 |
| 4 | hosts.deny / TCP wrappers / 防火墙重置 | 特定 IP 被服务器拦 |
| 5 | 那个端口上是非 SSH 服务 | 端口错了——别的东西应答后断开 |
1——头号原因:你被 fail2ban 封了
如果这之前有几次失败的密钥/密码尝试,fail2ban(或云服务商的等价物)很可能封了你的 IP——你一连它就丢包,表现就是"closed by remote host"。从另一台还能连的机器确认并解封:
sudo fail2ban-client status sshd # 你的 IP 在列表里吗?
sudo fail2ban-client set sshd unbanip 1.2.3.4 在手机上这尤其常见:变动的 IP(Wi-Fi 切蜂窝)加上一两次错误密钥尝试,就足以触发封禁。修好底层的认证问题(见 Permission denied)能止住反复发生。
2——sshd 重启、重启中或过载
如果机器在重启、或 sshd 在重载配置,那个窗口里的连接会被断开;过一分钟再试。在长期繁忙的服务器上,sshd 的 MaxStartups 限流(默认 10:30:100)在太多未认证连接在途时开始丢弃——负载下你会看到间歇性断开。在服务器上调高它有帮助:
# /etc/ssh/sshd_config
MaxStartups 30:50:100
# 然后:sudo systemctl reload ssh 3——看服务器自己的日志
权威答案在服务器上。从任何能进去的方式(控制台、另一个会话):
sudo journalctl -u ssh -n 50 # 或:tail -n 50 /var/log/auth.log 它会明白写出是封禁、拒绝某用户、hosts.deny、还是配置错误——把猜测变成一行诊断。
在手机上恢复
移动端的恼人之处是:你往往没法 SSH 进那台刚把你断开的机器去查。如果同网络还有另一台可达,就借道进去跑 fail2ban-client / journalctl 检查。如果你盯着原始报错、不确定是五个原因里的哪个,选中它问助手——TermAI 的 AI 读真实报错和你的上下文,告诉你它更像封禁、限流还是重启,并给出确认用的命令。
常见问题
"Connection closed by remote host" 是什么导致的?
服务器接受后又断开——最常见是 fail2ban 封 IP、sshd 重启/过载、连接数上限(MaxStartups)、或基于主机的拦截。查服务器认证日志。
它和 connection refused 有什么区别?
Refused = 没人在听。Closed by remote host = 有东西应答了,然后主动挂断。
我老是被封,为什么?
反复的失败认证(常是错的或没递的密钥)触发 fail2ban。修认证问题本身,有稳定地址的话把它加白名单。
kex_exchange_identification: Connection closed 是什么?
同一族——服务器在初始握手期间断开,通常是封禁、限流、或那个端口上是非 SSH 服务。
快速事实
- 含义:服务器接受后主动断开(不是 refused、不是 timed out)
- 头号原因:失败登录后被 fail2ban / 封 IP——
fail2ban-client status sshd - 其它:sshd 重启、负载下
MaxStartups限流、hosts.deny、端口错 - 诊断:服务器上
journalctl -u ssh//var/log/auth.log写明原因 - 移动端提示:变动 IP + 一两次错误密钥很容易触发封禁——修认证根因
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.