三台Linux服务器连接不上,多半是网络层、SSH服务或本地防火墙配置这三类问题,按顺序排查,五分钟内能定位九成故障。
先看网络层:三台机器到底通不通
服务器连不上,第一步别急着折腾SSH,先确认机器活着没有,用你本地的电脑ping一下三台服务器的IP。
- ping不同:说明网络链路断了,检查交换机端口、网线、云安全组入方向规则,或者机房是否断电。
- ping通但SSH连不上:说明网络是通的,问题出在22端口或服务本身。
有个细节容易忽略:三台机器如果不在同一网段,中间隔着防火墙或路由策略,那就要在服务器上执行traceroute看走哪一跳断了,比如你从办公网连机房的机器,中间经过三层交换机,常常是网关ACL拦了TCP握手。
还有一种情况,三台服务器里两台能连、一台不能连,那问题基本锁定在不能连的那台机器上,要么是它SSH服务挂了,要么是它的iptables规则拦了入站,这时候不要盲目重启,先systemctl status sshd看一眼。
重点排查SSH服务状态与端口监听
SSH连不上的第二大原因就是服务本身没起来或者没在预期端口监听,在服务器本地(或者通过IDC远程管理卡)执行:
systemctl status sshd ss -tlnp | grep 22
如果sshd状态是active但没监听22端口,多半是配置文件改坏了,比如有人把Port 22改成Port 2222,之后忘了改防火墙规则,这种情况很常见,尤其是三台机器批量改配置时,脚本里变量写错导致部分机器生效。
如果服务是死的,直接:
systemctl start sshd systemctl enable sshd
启动后再看监听状态,注意,如果sshd启动失败,会提示语法错误,常见的是PermitRootLogin拼错或ListenAddress写成了不存在的IP。
用nc或telnet测试端口连通性
在你本地电脑上执行:
nc -vz 服务器IP 22
或者:
telnet 服务器IP 22
如果返回Connection refused,说明服务器上的SSH端口没开放或服务没监听,如果卡住不动,说明防火墙把包丢了,这一步能帮你区分是服务问题还是防火墙问题。
防火墙和安全组是隐形杀手
很多Linux服务器连不上,不是服务坏了,而是防火墙规则变了,Cloud服务器要看安全组,物理服务器要看iptables或firewalld。
在服务器上查看:
iptables -L -n | grep 22
或者如果你用的firewalld:
firewall-cmd --list-ports
如果22端口没放行,执行:
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
firewalld的话:
firewall-cmd --add-port=22/tcp --permanent firewall-cmd --reload
云服务器别漏了安全组,很多用户改了安全组只开放了80和443,忘了放行22,因为安全组是云平台层的,你要去云控制台检查入方向规则,看是否允许你的本地公网IP访问22端口,如果你换了网络环境,比如原来在公司,现在在家,家里的IP不在安全组白名单里,那自然连不上。
三台服务器之间的互连问题怎么处理
如果你说的是A机器连不上B和C,或者B连不上A,那就是服务器之间的互通问题,这类场景在搭建集群时特别常见,比如部署Kubernetes或数据库主从。
首先确认三台机器的网卡和路由:
ip addr show ip route show
如果三台机器在同一个内网段,就直接用内网IP互连,如果跨网段,需要看各机器的路由表是否写对,常见问题是:A机器能ping通B的内网IP,但B连不上A,这通常是A的防火墙禁止了来自B网段的入站流量,排查时:
- 在B上ping A的IP
- 在B上
telnet A的IP 22 - 在A上通过
tcpdump -i eth0 port 22观察有没有来自B的SYN包
有SYN包但A不回包,就是防火墙拦了,完全没有包,就是网络路由不对。
三台机器如果在同一台物理交换机下,注意VLAN划分,有的管理员把三台机器划到了不同VLAN,没有配trunk或三层路由,导致它们之间无法通信,这个要在交换机上查配置。
检查/etc/hosts和DNS解析
有些集群环境依赖主机名解析,etc/hosts里写错了IP,比如三台机器的hostname和IP映射不对,会导致SSH连接时卡在gethostbyaddr那一步,表现为连接很久最后超时。
解决办法:
vim /etc/hosts
确保三台机器的主机名和IP对应正确,特别是互相通过主机名连接的场景,也可以临时用IP直连测试,排除DNS问题。
客户端侧连不上的常见坑
有时候问题不在服务器,而在你本地,比如你用的是Windows系统,自带的OpenSSH客户端版本过老,不支持服务器的密钥交换算法,或者你本地改了SSH配置文件,指定了错误的私钥路径。
检查你本地的SSH命令:
ssh -vvv 用户@服务器IP
把日志级别调到verbose,它会输出连接过程每一步,重点看:
Connecting to IP port 22:说明在尝试连接Connection timed out:网络不通或防火墙丢包Connection refused:服务器端口未监听Permission denied (publickey,password):认证失败,不是连接问题
如果日志显示协商算法失败,就在本地SSH命令后加-o HostKeyAlgorithms=+ssh-rsa试试,有些老服务器用的RSA密钥,新客户端默认不支持。
密钥认证失败的排查步骤
三台服务器如果都设置了密钥登录,而你换了新电脑,私钥没拷过去,自然登不上,还有权限不对的情况,服务器端~/.ssh/authorized_keys的权限必须是600,~/.ssh目录必须是700。
登录不上时,如果服务器允许密码登录,先切到密码登录方式:
ssh 用户@IP -o PreferredAuthentications=password
登录进去后,检查authorized_keys文件内容是否和你本地的公钥一致,多数人把三台机器的公钥配混了,A机器放了B的公钥,导致认证失败。
如何批量诊断三台服务器
如果三台机器都连不上,别一台一台排查,用脚本并行测。
写一个简单的shell脚本,循环机器列表:
for ip in 192.168.1.10 192.168.1.11 192.168.1.12; do echo "=== $ip ===" ping -c 2 -W 2 $ip > /dev/null && echo "ping OK" || echo "ping FAIL" nc -vz -w 2 $ip 22 > /dev/null 2>&1 && echo "port 22 OK" || echo "port 22 FAIL" done
这样能快速区分哪些机器网络通、哪些端口挂了,如果三台都是port 22 FAIL,那可能交换机或机房出口问题,如果只有一台FAIL,就是那一台的sshd或防火墙问题。
简米云和酷番云服务器连不上有什么特别之处
如果你用的是简米云或酷番云的Linux服务器,排查逻辑和物理机差不多,但多了一个控制台层面,比如说,你忘了安全组规则,或者你改错了网络ACL,都会导致连接失败。
云服务器有个优势:可以在网页控制台使用VNC登录,相当于带外管理,即使SSH完全连不上,你也能通过网页登录进去修复配置,这个方法非常实用,因为很多时候你改错了防火墙规则,把22端口封掉,只能靠VNC救回来。
简米云的实例安全组规则,入方向默认只开放22和3389,如果你在服务器内部又改了iptables,可能两者冲突,排查云上设备时,注意一条:安全组和iptables是叠加的,数据包要同时通过两层检查,任何一个拒绝都连不上。
三台服务器连不上的场景问答
Linux服务器重启后SSH连不上是怎么回事?
重启后连不上,多半是sshd服务没有设置为开机自启,检查systemctl list-unit-files | grep sshd,如果状态是disabled,执行systemctl enable sshd,重启后网卡可能没起来,查看/etc/sysconfig/network-scripts/下的网卡配置文件,确认ONBOOT=yes,如果改了静态IP,重启后IP变了,你原来连的地址自然失效,要用控制台VNC登录后查看新IP。
三台服务器只有一台能ping通但SSH连接超时,是什么原因?
这种多台之间的差异,最常见的是iptables规则不同,可能哪台机器上有自定义防火墙脚本,把INPUT链默认策略设成了DROP,且只放行了特定IP段,你用本地IP不在白名单里,连接请求就被丢弃,解决办法是通过VNC或机房带外登录,执行iptables -F清空规则,然后重新配置,另外云服务器还要看安全组,这一台机器可能被单独加了一条拒绝规则。
用跳板机连内网Linux服务器时提示连接被拒绝,如何定位?
如果是跳板机转发过来的,先确认跳板机上是否能直接连到目标服务器的内网IP,在跳板机上执行nc -vz 目标内网IP 22,如果跳板机通但本地连不上,再看跳板机的ssh隧道配置,-L参数转发的本地端口是否被占用,往往是你本地端口被其他程序占了,或者跳板机上AllowTcpForwarding被设成了no,检查跳板机的/etc/ssh/sshd_config,确认AllowTcpForwarding yes。
三台服务器连接不上的问题,本质上就是链路、端口、认证三层,链路层用ping和traceroute,端口层用telnet或nc,认证层看密钥和密码,按这个顺序依次排查,大部分情况不用重启机器就能定位,记住一句话:先通链路,再看端口,最后谈认证。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/771769.html


