🔍 一、常见原因及解决方法
SSH 服务未启动
确保服务器上的 sshd 服务正在运行。
sudo systemctl status sshd
如果未运行,启动它:
sudo systemctl start sshd sudo systemctl enable sshd
防火墙阻止了 SSH 端口(默认 22)
检查防火墙是否允许 SSH 连接:
sudo ufw status
如果使用的是 ufw,允许 SSH:
sudo ufw allow 22/tcp sudo ufw reload
如果使用 firewalld:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
SSH 配置限制了访问
查看 /etc/ssh/sshd_config 文件中的关键配置项:
PermitRootLogin:是否允许 root 登录PasswordAuthentication:是否允许密码登录AllowUsers/AllowGroups:是否限制了特定用户或组
修改后重启 SSH 服务:
sudo systemctl restart sshd
IP 被禁止(如 fail2ban、hosts.deny 等)
检查是否被 fail2ban 或其他安全工具封禁:
sudo fail2ban-client status sshd
解除封禁:
sudo fail2ban-client set sshd unbanip <IP地址>
检查 /etc/hosts.deny 是否包含你的 IP:
cat /etc/hosts.deny
SSH 密钥认证失败
如果你使用密钥登录,请确认:
- 公钥已正确添加到
~/.ssh/authorized_keys - 权限设置正确:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys chown -R $USER:$USER ~/.ssh
网络问题
- 检查服务器是否可达:
ping <服务器IP> telnet <服务器IP> 22
- 检查本地网络或路由器是否阻止了 SSH 连接。
SSH 客户端配置问题
尝试使用详细模式调试连接:
ssh -v user@server_ip
根据输出信息判断问题所在。
✅ 二、快速排查清单
| 检查项 | 命令/操作 |
|---|---|
| SSH 服务状态 | systemctl status sshd |
| 防火墙规则 | ufw status 或 firewall-cmd --list-all |
| SSH 配置 | 查看 /etc/ssh/sshd_config |
| 用户权限 | 检查 ~/.ssh/authorized_keys |
| 连接测试 | ssh -v user@ip |
| 是否被封禁 | 检查 fail2ban 或 hosts.deny |
🛠 三、临时恢复远程访问
如果远程连接完全失败,可以尝试:
- 通过云服务商的 VNC 控制台 或 串口控制台 登录服务器。
- 在控制台中执行上述排查命令。
📌 四、预防建议
- 使用密钥认证代替密码认证。
- 禁用 root 直接登录。
- 修改默认 SSH 端口(如改为 2222)。
- 使用
fail2ban防止暴力破解。 - 定期更新系统和 SSH 配置。
如果你能提供更具体的错误信息(如 ssh -v 的输出、错误提示等),我可以给出更精准的解决方案,欢迎补充!
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/476935.html



