傲来云 发表于 2025-9-4 13:57:53

当SSH无法登录时如何修复“Connection closed by foreign host”

当你尝试 SSH 登录服务器,命令瞬间返回 Connection closed by foreign host 并且无法建立任何连接时,这意味着远程主机(服务器)的 SSH 服务在认证甚至在你完成认证之前就主动终止了连接。此时,所有需要通过 SSH 在服务器上执行的命令都变得不可能。

首先:你必须通过一条不依赖 SSH 服务的路径来访问服务器。 以下是你的所有解决方案,请按顺序尝试。

在怀疑服务器之前,先快速排除客户端和网络问题:
1.检查IP和端口:确认你连接的 IP 地址和端口号(默认22)绝对正确。

2.尝试强制IPv4:有时 IPv6 配置有问题会导致此错误。
ssh -4 username@server_ipssh -vvv username@server_ip > ssh_log.txt 2>&1systemctl status sshd# Ubuntu / Debian
sudo tail -50 /var/log/auth.log | grep sshd

# CentOS / RHEL / Rocky Linux
sudo tail -50 /var/log/secure | grep sshd# 修复权限 (以用户 alice 为例)
sudo chmod 755 /home/alice
sudo chmod 700 /home/alice/.ssh
sudo chmod 600 /home/alice/.ssh/authorized_keys
sudo chown -R alice:alice /home/alice/.sshid usernamesudo passwd username (如果被锁定)

Could not load host key 或 no hostkey available
SSH 服务器的密钥丢失或权限错误。# 重新生成丢失的Host Key
sudo ssh-keygen -A
# 确保权限正确
sudo chmod 644 /etc/ssh/ssh_host_*.pub
sudo chmod 600 /etc/ssh/ssh_host_*keysudo systemctl stop fail2bansudo fail2ban-client set sshd unbanip your_client_ipsudo vi /etc/ssh/sshd_config
4. 检查防火墙
即使SSHD配置正确,服务器防火墙也可能丢弃你的连接。
检查UFW (Ubuntu):sudo ufw status
# 如果22端口未允许,则允许它
sudo ufw allow ssh
# 或 sudo ufw allow 22/tcpsudo firewall-cmd --list-all
# 如果ssh服务不在列表中,添加它
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reloadsudo reboot
页: [1]
查看完整版本: 当SSH无法登录时如何修复“Connection closed by foreign host”