针对SSH远程22端口无法连接的问题,以下是系统化的排查与解决方法:
一、基础排查步骤
-
检查SSH服务状态
在目标服务器上运行以下命令确认SSH服务是否启动:
sudo systemctl status sshd
若未启动,使用以下命令启动:
sudo systemctl start sshd
-
验证网络连通性
从本地主机ping目标服务器:
ping 192.168.0.118
若无法ping通,检查网络配置或DNS设置。
-
检查22端口开放状态
使用
netstat
或firewall-cmd
命令确认22端口是否监听:netstat -tuln | grep 22
或者在云服务控制台检查安全组规则。
二、防火墙设置调整
-
使用UFW开放22端口
若使用UFW防火墙,执行以下命令:
sudo ufw allow 22/tcp sudo ufw reload
注意:部分情况下重启
firewalld
服务即可生效。 -
检查iptables规则
若使用iptables,运行:
sudo iptables -L -n | grep 22
添加开放规则:
sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT
永久化规则需编辑配置文件:
sudo vi /etc/sysconfig/iptables
添加类似行:
-A INPUT -p tcp --dport 22 -j ACCEPT
重启防火墙服务:
sudo service iptables restart
三、SSH配置检查
-
确认SSH配置文件
编辑
/etc/ssh/sshd_config
,检查以下设置:-
Port
(是否修改过默认端口) -
PermitRootLogin
(是否允许root登录) -
PasswordAuthentication
(是否启用密码认证)
修改后重启SSH服务:
sudo systemctl restart sshd
-
-
检查SELinux设置
若使用SELinux,需临时禁用:
sudo setenforce 0
永久修改需编辑
/etc/selinux/config
,将SELINUX=enforcing
改为SELINUX=disabled
。
四、其他常见问题
-
SSH服务未启动 :通过
systemctl start sshd
启动服务 -
端口冲突 :使用
netstat -tuln | grep 22
检查端口占用,修改配置文件中的Port
参数 -
云服务限制 :在AWS等平台检查网络安全组规则
-
客户端配置 :使用PuTTY时确认端口号、协议等设置正确
五、进阶排查(可选)
若上述方法无效,可尝试:
-
使用
nmap
扫描端口及服务版本:nmap -sV 192.168.0.118
-
检查系统日志:
sudo tail -f /var/log/auth.log
-
临时禁用SSH服务测试连接(不推荐):
sudo systemctl stop sshd
通过以上步骤,通常可以解决SSH 22端口无法连接的问题。若问题依然存在,建议提供具体错误代码或日志信息进一步分析。