5月30日 20:53
SSH 连接失败怎么排查?常见故障如何解决?
SSH 故障排查不要一上来就改配置,先判断卡在哪一层:网络能不能到、端口有没有开、sshd 是否监听、认证是否通过、客户端是否选错密钥。timeout 多半是包没到服务端,refused 是端口没人接,Permission denied 则说明已经连到服务但认证失败。
追问
timeout 和 refused 有什么区别?
timeout 优先看安全组、防火墙、路由和端口开放;refused 通常说明 sshd 没监听对应端口或服务没起来。先用 nc -zv host 22 验证。
authorized_keys 有公钥还失败怎么办?
最常见是权限太开放、用户名不对、客户端没用对应私钥。用 ssh -vvv 看实际尝试的 key,再查服务端 auth.log 或 journalctl。
可以关闭 StrictHostKeyChecking 吗?
不建议。它会绕过主机身份校验,遇到 DNS 污染或中间人攻击风险更高。自动化脚本应预先分发 known_hosts。
改 sshd_config 最怕什么?
最怕语法错误或禁掉当前登录方式后断开连接。修改前跑 sshd -t,保留当前会话,再开新窗口测试。
写段命令
bashnc -zv hostname 22 ssh -vvv user@hostname sudo systemctl status sshd sudo sshd -t