开始输入,可搜索发票、服务、域名、工单,以及 更多...
SSH 突然连不上是最常见的服务器问题之一。本文提供一套 Linux SSH 连接失败排查流程,帮你根据报错快速判断是网络、端口、sshd 服务、防火墙还是 fail2ban 封禁导致的问题,并在 SSH 完全无法使用时通过 VNC 控制台进入系统修复。适用于 Debian/Ubuntu 与 CentOS/Rocky/AlmaLinux 系统的 VPS 和独立服务器。
不同报错指向不同原因,先看清提示再动手:
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
先从自己的电脑测试端口是否可达,并用 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]
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
确认 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))
根据系统使用的防火墙查看规则,确认 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
多次输错密码后,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
如果以上都正常,查看 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 /
这是本地保存的旧指纹与新系统不一致导致的,在本地执行 ssh-keygen -R 服务器IP 删除旧记录后重新连接即可。
可能是你的 IP 被 fail2ban 封禁,或本地网络屏蔽了该端口。可换网络测试,或在 VNC 中解封 IP、改用其他端口。
可在客户中心重置密码(如该产品支持),或通过 VNC 在启动菜单进入单用户模式重置。不熟悉操作时请提交工单。
如按以上步骤操作后仍无法解决,欢迎提交工单联系 IMIDC 7×24 技术支持。提交时请注明服务器 IP、操作系统、已执行的命令和报错截图,工程师可以更快定位问题。