首页 帮助中心 香港云服务器 SSH连接不上香港CN2 VPS故障原因排查:端口/防火墙/安全组逐层诊断!
SSH连接不上香港CN2 VPS故障原因排查:端口/防火墙/安全组逐层诊断!
时间 : 2026-09-23 10:01:25
编辑 : 华纳云
阅读量 : 31

  香港CN2 VPS突然连不上了,SSH客户端转半天圈最后弹出一个“Connection timed out”或者“Connection refused”。这个时候人容易慌——服务器是不是挂了?是不是被攻击了?数据还在不在?先稳住。SSH连不上这件事,九成以上的情况不是服务器本身出了大问题,而是某一层“关卡”把连接拦住了。从你的电脑到服务器之间,至少有四道关卡:本地网络、公网路由、云平台安全组、服务器内部防火墙。按顺序逐层排查,比一上来就重装系统或者找客服要高效得多。

  第一层:确认服务器是否活着?

  在排查任何配置问题之前,先确认最基本的——服务器本身有没有在运行。

  看VPS服务商的控制台。登录云平台,查看实例状态。如果显示“运行中”,说明宿主机层面没问题。如果显示“已停止”或“异常”,先通过控制台重启实例。

  用ping测试连通性:

ping 你的VPS_IP

  如果ping通,说明网络层至少能到达服务器,问题大概率在端口或防火墙层面。如果ping不通,有两种可能:服务器宕机了,或者ICMP被服务器防火墙拦截了。

  香港CN2 VPS特别要注意一点:很多商家默认开启了ICMP限速或禁用ping。所以ping不通不代表服务器一定有问题。更准确的判断方法是telnet测试端口:

telnet 你的VPS_IP 22

  如果22端口能连上,说明服务器活着,只是ICMP被禁了。如果端口也连不上,继续往下查。

  另一个判断方法是用VNC控制台。几乎所有VPS商家都提供VNC或Web控制台登录功能,绕过SSH直接连到服务器的“屏幕”。如果VNC能进系统,说明服务器本身没问题,问题出在网络或SSH配置上。

  第二层:检查云平台安全组

  如果确认服务器在运行,但SSH端口连不上,第二层要查的就是云平台的安全组。

  安全组是云服务商在虚拟化层面设置的防火墙,优先级高于服务器内部的防火墙。很多人改了半天服务器里的iptables或ufw,结果发现是云控制台的安全组压根没放行22端口。

  排查方法:登录VPS服务商的控制台,找到实例关联的安全组,查看入方向规则。确认有没有一条规则允许你的IP访问22端口(或者你自定义的SSH端口)。

  常见的安全组配置错误:

  1. 规则没生效:添加了规则但忘记保存,或者规则配置了但没关联到实例。

  2. 源IP限制过严:安全组规则里的源地址填了某个特定的IP段,但你的公网IP变了。家用宽带的公网IP通常是动态的,今天能用不代表明天还能用。如果是这种情况,临时把源地址改成0.0.0.0/0测试一下,确认能连上后再收窄。

  3. 端口填错:如果你改过SSH端口(比如改成了58222),安全组里放行的还是22端口,那自然连不上。

  一个容易被忽略的细节:部分云平台的安全组规则有优先级概念。如果有一条“拒绝所有”的规则排在前面,后面放行22端口的规则就不生效了。检查规则列表的顺序,确保放行规则在拒绝规则之前。

  第三层:检查服务器内部防火墙

  安全组确认放行了22端口,但SSH还是连不上,接下来查服务器内部的防火墙。

  Ubuntu/Debian系统:

sudo ufw status

  如果显示Status: active,查看规则列表里有没有放行22端口。如果没有:

sudo ufw allow 22/tcp

  如果你改过SSH端口,把22换成实际端口。

  CentOS/Rocky系统:

sudo firewall-cmd --list-all

  查看ports字段里有没有22端口。如果没有:

sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --reload

  一个特别容易踩的坑:有人开了防火墙,但没有提前放行SSH端口,结果把自己锁在门外了。如果你还能通过VNC登录服务器,用上面的命令补救。如果VNC也进不去,只能通过云平台的控制台重置防火墙规则,或者进入救援模式。

  iptables直接配置的情况:

sudo iptables -L -n

  如果看到一条DROPREJECT规则拦住了22端口,需要添加放行规则:

sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT

  第四层:检查SSH服务本身

  安全组和防火墙都放行了,但SSH还是连不上,问题可能出在SSH服务本身。

  如果还能通过VNC登录服务器,检查SSH服务状态:

systemctl status sshd

  如果显示inactivefailed,启动它:

systemctl start sshd
systemctl enable sshd

  检查SSH监听的端口:

ss -tlnp | grep sshd

  输出会显示SSH实际监听的端口。如果显示的是0.0.0.0:22,说明监听正常。如果显示的是127.0.0.1:22,说明SSH只监听本地回环地址,外部连接会被拒绝。这种情况需要修改/etc/ssh/sshd_config里的ListenAddress配置。

  检查SSH配置文件是否有语法错误:

sshd -t

  如果有报错,根据提示修改/etc/ssh/sshd_config

  检查是否改了默认端口:

grep "^Port" /etc/ssh/sshd_config

  如果输出的是Port 58222而不是默认的22,那连接的时候需要指定端口:

ssh -p 58222 root@你的VPS_IP

  检查是否禁用了root登录或密码登录:

grep -E "PermitRootLogin|PasswordAuthentication" /etc/ssh/sshd_config

  如果PermitRootLoginno,root用户无法SSH登录,需要用普通用户登录后再susudo

  如果PasswordAuthenticationno,密码登录被禁用,只能用密钥登录。如果你没有配置密钥,就会被拒之门外。这种情况需要通过VNC登录服务器,把配置改回yes,重启SSH服务。

  第五层:检查本地网络和客户端问题

  服务器端全部排查完了,还是连不上,问题可能在你这边。

  1. 本地防火墙或杀毒软件拦截:Windows Defender、360、火绒等可能拦截了SSH客户端的出站连接。临时关闭防火墙测试一下。

  2. 本地网络限制:公司网络或学校网络可能封了22端口。用手机4G/5G开热点测试一下,如果热点能连上,说明是本地网络的问题。

  3. SSH客户端配置问题:如果你用的是~/.ssh/config文件,检查里面有没有针对这个IP的错误配置。临时用命令行直接连接测试:

ssh -v root@你的VPS_IP

  -v参数会输出详细的调试信息,能看到连接卡在哪一步。如果卡在Connecting to ...,是网络层问题;如果卡在SSH2_MSG_KEXINIT,可能是MTU或加密算法协商问题。

  4. 换个客户端测试:Windows自带的OpenSSH、PuTTY、Xshell、Termius都试一遍。如果某个客户端能连而其他的不行,问题出在客户端配置上。

  一个完整的排查流程

  把上面的步骤串起来,形成可执行的流程:

  第1步:ping测试。ping通说明网络可达,ping不通先看VNC能不能进系统。

  第2步:telnet测试端口。telnet IP 22,如果端口不通,进入第3步。

  第3步:查云平台安全组。确认入方向规则放行了SSH端口,源IP没有限制过严。

  第4步:通过VNC登录服务器,查内部防火墙(ufw/firewalld/iptables),确认SSH端口放行。

  第5步:查SSH服务状态。systemctl status sshd,确认服务在运行、监听地址正确、配置文件没有语法错误。

  第6步:检查是否改了端口或禁用了密码登录。确认连接时用的端口和认证方式正确。

  第7步:本地网络排查。换热点测试、换客户端测试、用ssh -v看详细日志。

  香港CN2 VPS大部分SSH连不上的问题,在前三步就能定位。真正需要重装系统的情况非常少——大多数时候只是某一层的规则挡住了连接,把规则改对,问题就解决了。

相关内容
客服咨询
7*24小时技术支持
技术支持
渠道支持