SSH 登录慢、超时、被拒绝:从密钥、权限到服务端的分步排查
SSH 连不上时,先不要急着重启服务或重装系统。登录慢、超时、被拒绝往往是不同环节的问题,沿着客户端、网络、服务端这条链路逐段缩小范围,通常几分钟就能定位。
先分清三种现象
登录慢一般是服务端在做反向解析或密钥协商耗时;超时多半是网络不通或端口被拦截;被拒绝则说明已经连到服务端,但在认证或授权环节被挡下。先看现象再选工具,比逐个改配置更省时间。
第一步:用详细模式看卡在哪一步
在客户端使用详细模式连接,观察停在连接建立、密钥交换还是认证阶段:
ssh -vvv -o ConnectTimeout=10 user@服务器地址
如果输出停在连接建立之前,优先排查网络与端口;如果停在认证阶段,优先排查密钥与权限。
第二步:排查密钥与权限
密钥登录最常见的坑不在密钥本身,而在文件权限。私钥权限过宽会被客户端直接拒绝使用,服务端目录权限不对也会导致密钥认证被忽略。
chmod 600 ~/.ssh/id_ed25519
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys
同时确认服务端配置没有关闭密钥登录或限制了允许登录的用户,改完配置后要重新加载服务而不是直接重启整个系统。
第三步:排查服务端与网络
如果客户端一切正常,再到服务端看服务状态、监听地址和日志。重点确认服务在监听正确的地址和端口,防火墙与安全组放行了所用端口,日志里是否有认证失败记录。
sudo systemctl status sshd
sudo ss -tlnp | grep 22
sudo journalctl -u sshd --since "1 hour ago" | tail -n 100
云服务器还要单独检查安全组:本地端口通不代表云上端口已放行,安全组规则、端口号和协议三者都要对上。
第四步:登录慢的专项排查
登录慢但最终能登上时,先看服务端是否在做反向 DNS 解析。内网地址没有反向解析记录时,等待解析超时就会表现为每次登录都慢几秒到几十秒。可以在测试环境先关闭反向解析验证,再结合日志确认耗时是否消失。
time ssh -o ConnectTimeout=10 user@服务器地址 exit
如果耗时集中在连接建立后、提示输入密码前,反向解析和认证后端就是重点;如果耗时在连接建立前,网络路径与中间设备更可疑。
一张排查清单
先用详细模式定位卡点;再查密钥文件权限;然后看服务端状态、监听端口与日志;最后核对防火墙与安全组。按这个顺序走一遍,多数 SSH 问题都能在不重启整台服务器的情况下解决。改配置前先备份原文件,改完只做最小范围的验证,确认无误后再收尾。
- 点赞
- 收藏
- 关注作者
评论(0)