针对SSH连接22端口被拒绝的问题,以下是可能的原因及对应的解决方法:
一、SSH服务未启动
-
启动SSH服务
使用命令
sudo systemctl start ssh
(或sudo service ssh start
)启动服务。 -
检查服务状态
运行
sudo systemctl status ssh
确认服务是否已启动。
二、防火墙阻止连接
-
Linux系统防火墙
-
使用
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
允许22端口流量。 -
若使用
ufw
,运行sudo ufw allow 22/tcp
。
-
-
云服务提供商防火墙
- 登录云服务控制台,检查安全组或网络ACL是否允许22端口入站。
三、端口冲突或配置错误
-
检查端口占用
运行
sudo netstat -tuln | grep 22
或sudo lsof -i :22
查看是否有其他服务占用该端口。 -
修改SSH端口
-
编辑
/etc/ssh/sshd_config
,将Port 22
修改为其他端口(如2222)。 -
重启SSH服务:
sudo systemctl restart ssh
。
-
-
验证配置文件
确保
Protocol 2
和PasswordAuthentication yes
等关键配置项未被注释且正确。
四、网络连接问题
-
检查网络可达性
使用
ping target_host
或traceroute target_host
测试网络连接。 -
检查DNS解析
若使用域名连接,确保DNS解析正确(如修改
hosts
文件)。
五、其他特殊情况
-
Docker环境 :若在Docker容器中运行SSH,需使用
--network host
参数或绑定端口。 -
SELinux/AppArmor :检查安全模块是否限制了SSH访问。
通过以上步骤,通常可以解决SSH 22端口被拒绝的问题。若问题仍未解决,建议查看系统日志(如 /var/log/auth.log
)获取详细错误信息。