ESC

开始输入,可搜索发票、服务、域名、工单,以及 更多...

搜索... Ctrl+K
Linux 服务器

Linux SSH 连接失败排查:Connection refused、连接超时与无法登录解决方法

7 个步骤 7 分钟阅读 1616 次阅读 87
本文目录

SSH 突然连不上是最常见的服务器问题之一。本文提供一套 Linux SSH 连接失败排查流程,帮你根据报错快速判断是网络、端口、sshd 服务、防火墙还是 fail2ban 封禁导致的问题,并在 SSH 完全无法使用时通过 VNC 控制台进入系统修复。适用于 Debian/Ubuntu 与 CentOS/Rocky/AlmaLinux 系统的 VPS 和独立服务器。

步骤 1:根据 SSH 报错判断问题方向

不同报错指向不同原因,先看清提示再动手:

  • Connection refused:服务器可达,但该端口没有程序监听,通常是 sshd 未运行或端口写错。
  • Connection timed out:数据包没有得到任何回应,常见于 IP 错误、服务器宕机、防火墙丢弃或 IP 被封禁。
  • Permission denied:网络和服务都正常,是账号、密码或密钥的问题。
  • Connection reset / closed by remote host:常见于 fail2ban、hosts.deny 拦截或 sshd 配置错误。
ssh: connect to host 203.0.113.10 port 22: Connection refused
ssh: connect to host 203.0.113.10 port 22: Connection timed out
[email protected]: Permission denied (publickey,password).
kex_exchange_identification: read: Connection reset by peer

步骤 2:在本地测试 SSH 端口连通性

先从自己的电脑测试端口是否可达,并用 ssh -vvv 查看详细握手过程。如果在其他网络(例如手机热点)可以连接,说明问题出在本地网络或运营商线路,而非服务器。

# Windows PowerShell
Test-NetConnection 203.0.113.10 -Port 22

# macOS / Linux
nc -vz -w 5 203.0.113.10 22

# Verbose SSH client output shows where it fails
ssh -vvv -p 22 [email protected]

步骤 3:通过 VNC 控制台登录服务器

SSH 无法使用时,请登录客户中心 → 我的产品与服务 → 选择服务器 → 管理,打开 VNC 控制台(不同产品入口名称可能不同,如找不到可提交工单)。VNC 相当于直接接上显示器和键盘,不依赖 SSH 和网络配置,输入 root 和密码即可登录。以下排查命令都在 VNC 中执行。

# In the VNC console
localhost login: root
Password:
# Then confirm the network is up
ip a
ping -c 3 1.1.1.1

步骤 4:检查 sshd 服务状态与监听端口

确认 sshd 正在运行。如果状态为 failed,先用 sshd -t 检查配置文件语法,修正错误后重启。再用 ss 确认它实际监听的端口,与你连接时使用的端口是否一致。

# Debian / Ubuntu (service name: ssh)
systemctl status ssh
# CentOS / Rocky / AlmaLinux (service name: sshd)
systemctl status sshd

sshd -t                       # config syntax check
systemctl restart sshd        # or: systemctl restart ssh
ss -tlnp | grep sshd
# LISTEN 0 128 0.0.0.0:22  0.0.0.0:*  users:(("sshd",pid=812,fd=3))

步骤 5:检查防火墙是否放行 SSH 端口

根据系统使用的防火墙查看规则,确认 SSH 端口(默认 22 或你修改后的端口)已放行。修改过 SSH 端口却忘记放行,是“连接超时”最常见的原因。

# firewalld (CentOS / Rocky / AlmaLinux)
firewall-cmd --list-all
firewall-cmd --permanent --add-service=ssh && firewall-cmd --reload

# ufw (Debian / Ubuntu)
ufw status verbose
ufw allow 22/tcp

# Raw rules (iptables / nftables)
iptables -S | head -n 30
nft list ruleset | head -n 50

步骤 6:检查 fail2ban 是否封禁了你的 IP

多次输错密码后,fail2ban 会自动封禁来源 IP,表现为突然超时或被拒绝。在百度或 ip.sb 等网站查到自己的公网 IP 后,在服务器上查看并解封。

fail2ban-client status sshd
fail2ban-client set sshd unbanip 198.51.100.25

# Also check TCP wrappers on older systems
cat /etc/hosts.deny

步骤 7:查看 SSH 日志定位原因

如果以上都正常,查看 sshd 日志通常能直接看到拒绝原因,例如权限错误、用户被禁止登录、密钥格式错误等。另外磁盘被写满也可能导致登录异常。

# Recent sshd logs
journalctl -u sshd -n 50 --no-pager      # CentOS / Rocky / AlmaLinux
journalctl -u ssh -n 50 --no-pager       # Debian / Ubuntu
tail -n 50 /var/log/secure               # RHEL family
tail -n 50 /var/log/auth.log             # Debian / Ubuntu

# A full disk can also break logins
df -h /
如果服务器 ping 不通、VNC 也无法打开或显示异常,可能是服务器宕机或网络故障,请直接提交工单,由技术人员检查。

常见问题

重装系统后 SSH 提示主机密钥变化无法连接?

这是本地保存的旧指纹与新系统不一致导致的,在本地执行 ssh-keygen -R 服务器IP 删除旧记录后重新连接即可。

只有我自己的网络连不上,别人都能连?

可能是你的 IP 被 fail2ban 封禁,或本地网络屏蔽了该端口。可换网络测试,或在 VNC 中解封 IP、改用其他端口。

VNC 中忘记 root 密码怎么办?

可在客户中心重置密码(如该产品支持),或通过 VNC 在启动菜单进入单用户模式重置。不熟悉操作时请提交工单。

如按以上步骤操作后仍无法解决,欢迎提交工单联系 IMIDC 7×24 技术支持。提交时请注明服务器 IP、操作系统、已执行的命令和报错截图,工程师可以更快定位问题。

这篇文章有帮助吗?

相关教程