SSH连接失败是VPS使用中最常见的问题之一。报错信息可能是"Connection refused"、"Connection timed out"或"Permission denied"等。本文按照排查优先级,从最常见的原因开始逐步排查。
首先确认VPS的IP地址是否可达。
# 本地终端执行
ping 你的VPS_IP
# 如果本地Ping不通,用海外节点测试
# 访问 ping.pe 输入IP测试全球可达性
可能的结果:
确认SSH端口是否正确,搬瓦工新安装系统的SSH端口是随机分配的,不一定是默认的22。
# 在KiwiVM面板查看SSH端口
# 或使用telnet/nc测试端口
telnet 你的VPS_IP SSH端口
nc -zv 你的VPS_IP SSH端口
# 使用nmap扫描常见SSH端口
nmap -p 22,2222,8022,29418 你的VPS_IP
搬瓦工VPS的SSH端口可在KiwiVM面板的Main controls页面查看。连接时需要指定端口:
ssh root@你的VPS_IP -p SSH端口
登录搬瓦工KiwiVM面板,检查:
如果无法通过SSH连接但VPS在运行,可以使用KiwiVM面板的"Root shell - interactive"功能直接进入VPS控制台。
通过KiwiVM的Root shell登录后,检查防火墙是否阻止了SSH:
# 检查iptables规则
iptables -L -n
# 检查是否有DROP SSH端口的规则
iptables -L INPUT -n --line-numbers
# 如果有阻止规则,清除并放行SSH
iptables -F
iptables -A INPUT -p tcp --dport SSH端口 -j ACCEPT
# 检查ufw状态
ufw status
# 如果ufw开启但未放行SSH
ufw allow SSH端口/tcp
# 检查firewalld
firewall-cmd --list-all
# 检查sshd状态
systemctl status sshd
# 或
systemctl status ssh
# 如果服务未运行,启动它
systemctl start sshd
systemctl enable sshd
# 查看sshd日志定位问题
journalctl -u sshd -n 50
# 检查sshd配置文件语法
sshd -t
检查 /etc/ssh/sshd_config:
# 确认监听端口正确
Port 你的SSH端口
# 确认允许root登录(搬瓦工默认root)
PermitRootLogin yes
# 确认密码认证是否开启
PasswordAuthentication yes
# 确认监听地址
ListenAddress 0.0.0.0
修改配置后重启sshd:systemctl restart sshd
如果使用SSH密钥认证但提示"Permission denied (publickey)":
# 检查密钥文件权限(本地)
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
# 检查服务器端authorized_keys权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R root:root ~/.ssh
# 使用verbose模式查看详细错误
ssh -vvv root@你的VPS_IP -p SSH端口
fail2ban-client status sshd,解封 fail2ban-client set sshd unbanip 你的IPsetenforce 0Ping不通 → 检查IP是否被封 → 换IP或切换机房 Ping通但连接超时 → 检查端口号 → 检查防火墙 Connection refused → 检查sshd服务 → 检查端口配置 Permission denied → 检查密码/密钥 → 检查sshd_config 连接后立即断开 → 检查磁盘空间 → 检查系统日志
Tip: 搬瓦工KiwiVM面板的Root shell功能是排查SSH问题的救命工具,无需SSH即可操作VPS。更多教程请查看新手教程。