插件窝 干货文章 如何解决Linux服务器上的SSH连接中断和拒绝问题

如何解决Linux服务器上的SSH连接中断和拒绝问题

SSH 检查 bash sudo 745    来源:    2025-04-17

解决Linux服务器SSH连接中断和拒绝问题

常见原因及解决方案

1. 网络连接问题

  • 检查网络连通性bash ping 服务器IP traceroute 服务器IP
  • 解决方案
    • 确保客户端与服务器之间的网络连接正常
    • 检查防火墙设置是否允许SSH流量(默认端口22)

2. SSH服务未运行

  • 检查SSH服务状态bash sudo systemctl status sshd # 对于使用systemd的系统 sudo service sshd status # 对于使用init的系统
  • 解决方案
    • 启动SSH服务: bash sudo systemctl start sshd sudo service sshd start

3. 端口配置问题

  • 检查SSH端口bash sudo netstat -tuln | grep ssh sudo ss -tuln | grep ssh
  • 解决方案
    • 确保/etc/ssh/sshd_config中的Port设置正确
    • 如果修改了默认端口,连接时需指定端口: bash ssh -p 新端口号 用户名@服务器IP

4. 防火墙阻止

  • 检查防火墙规则bash sudo iptables -L -n # 对于iptables sudo ufw status # 对于UFW
  • 解决方案
    • 允许SSH端口: bash sudo ufw allow 22/tcp sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

5. 认证问题

  • 检查认证日志bash sudo tail -f /var/log/auth.log sudo journalctl -u sshd -f # 对于systemd系统
  • 解决方案
    • 确保用户名和密码正确
    • 检查/etc/ssh/sshd_config中的认证设置: PasswordAuthentication yes PermitRootLogin yes/prohibit-password

6. 连接超时

  • 调整SSH配置
    • /etc/ssh/sshd_config中添加: ClientAliveInterval 60 ClientAliveCountMax 5
    • 然后重启SSH服务: bash sudo systemctl restart sshd

7. 最大连接数限制

  • 检查连接限制bash grep MaxSessions /etc/ssh/sshd_config grep MaxStartups /etc/ssh/sshd_config
  • 解决方案
    • 适当增加限制值并重启SSH服务

8. 密钥认证问题

  • 检查密钥权限
    • 确保~/.ssh目录权限为700
    • 确保~/.ssh/authorized_keys文件权限为600
  • 解决方案bash chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys

高级故障排除

  1. 详细日志模式连接

    ssh -vvv 用户名@服务器IP
    
  2. 测试不同加密算法

    ssh -o Ciphers=aes128-ctr 用户名@服务器IP
    
  3. 检查SELinux状态

    sestatus
    

    如果启用,可能需要调整策略或暂时禁用:

    setenforce 0
    
  4. 检查主机密钥变化

    • 如果收到"WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED"错误
    • 解决方案: bash ssh-keygen -R 服务器IP

通过以上步骤,您应该能够诊断并解决大多数SSH连接问题。如果问题仍然存在,可能需要检查更详细的系统日志或联系网络管理员。