插件窝 干货文章 linux连接ssh时有一台始终无法连接怎么解决

linux连接ssh时有一台始终无法连接怎么解决

检查 服务器 SSH sudo 477    来源:    2025-04-14

Linux SSH 连接问题排查指南

当某台Linux服务器无法通过SSH连接时,可以按照以下步骤进行排查和解决:

1. 基础网络检查

ping 目标服务器IP
  • 如果ping不通:检查网络连接、防火墙设置、服务器是否在线
  • 如果能ping通:继续下一步排查

2. 检查SSH服务状态

在目标服务器上执行:

systemctl status sshd
# 或
service sshd status

如果服务未运行:

sudo systemctl start sshd
sudo systemctl enable sshd

3. 检查SSH端口监听

在目标服务器上执行:

netstat -tuln | grep 22
# 或
ss -tuln | grep 22

如果未监听22端口: - 检查SSH配置文件 /etc/ssh/sshd_config 中的 Port 设置 - 确认SSH服务是否绑定到了正确IP

4. 检查防火墙设置

在目标服务器上检查防火墙规则:

# 对于iptables
sudo iptables -L -n

# 对于firewalld
sudo firewall-cmd --list-all

# 对于ufw
sudo ufw status

如果需要开放SSH端口:

# iptables
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# firewalld
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload

# ufw
sudo ufw allow 22/tcp

5. 检查SSH配置文件

编辑 /etc/ssh/sshd_config 文件,确认以下关键设置:

PermitRootLogin yes/prohibit-password
PasswordAuthentication yes
AllowUsers 用户名

修改后重启SSH服务:

sudo systemctl restart sshd

6. 检查SELinux状态

getenforce

如果是Enforcing模式,可以尝试:

sudo setenforce 0

或为SSH添加SELinux规则

7. 检查连接日志

在客户端查看详细错误:

ssh -vvv 用户名@服务器IP

在服务器端查看SSH日志:

sudo tail -f /var/log/auth.log
# 或
sudo journalctl -u sshd -f

8. 其他可能原因

  • 服务器资源耗尽(内存、磁盘空间)
  • 达到最大连接数限制
  • 用户主目录权限问题
  • .ssh目录或authorized_keys文件权限问题
  • 网络设备(如路由器、交换机)的ACL限制

9. 高级排查

如果以上步骤都无效,可以尝试: - 使用telnet测试端口连通性:telnet 服务器IP 22 - 临时关闭所有防火墙进行测试 - 检查是否有TCP Wrapper限制(/etc/hosts.allow和/etc/hosts.deny) - 检查网络连接跟踪表是否满(dmesg | grep nf_conntrack

通过以上步骤的系统性排查,应该能够定位并解决SSH连接问题。