返回列表 发布新帖
查看: 33|回复: 0

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

发表于 4 天前 | 查看全部 |阅读模式

这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

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

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

Could not load host key 或 no hostkey available
SSH 服务器的密钥丢失或权限错误。
  1. # 重新生成丢失的Host Key
  2. sudo ssh-keygen -A
  3. # 确保权限正确
  4. sudo chmod 644 /etc/ssh/ssh_host_*.pub
  5. sudo chmod 600 /etc/ssh/ssh_host_*key
复制代码
  1. sudo systemctl stop fail2ban
复制代码
  1. sudo fail2ban-client set sshd unbanip your_client_ip
复制代码
  1. sudo vi /etc/ssh/sshd_config
复制代码

4. 检查防火墙
即使SSHD配置正确,服务器防火墙也可能丢弃你的连接。
检查UFW (Ubuntu):
  1. sudo ufw status
  2. # 如果22端口未允许,则允许它
  3. sudo ufw allow ssh
  4. # 或 sudo ufw allow 22/tcp
复制代码
  1. sudo firewall-cmd --list-all
  2. # 如果ssh服务不在列表中,添加它
  3. sudo firewall-cmd --add-service=ssh --permanent
  4. sudo firewall-cmd --reload
复制代码
  1. sudo reboot
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2025 Suike Tech All Rights Reserved. 随客交流社区 (备案号:津ICP备19010126号) |Processed in 0.139234 second(s), 8 queries , Gzip On, MemCached On.
关灯 在本版发帖返回顶部
快速回复 返回顶部 返回列表