Ubuntu 上 SSH 连不上服务器?排查顺序
Ubuntu 上 SSH 连不上服务器的固定排查顺序:网络通不通、22 端口开没开、服务起没起、密钥/口令对不对、防火墙放没放,逐项排除不靠猜。
简短答案
SSH 连不上不要乱试,按**「网络 → 端口 → 服务 → 认证 → 防火墙」**这个固定顺序排查,每一层能独立定位,能少走弯路。多数情况是端口没开、服务没起、或防火墙把 22 挡了。
现象对照
| 现象 | 更可能的层 |
|---|---|
Connection timed out |
网络不通 / 防火墙丢弃 / 端口没开 |
Connection refused |
端口通但服务没起 |
Permission denied |
网络端口都通,认证不对(口令/密钥/用户) |
排查步骤
# 1. 网络与端口(在能上网的机器上测目标机 22)
ping <目标机>
nc -zv <目标机> 22
# 2. 服务是否在监听(目标机上)
systemctl status ssh --no-pager
sudo ss -ltnp | grep :22
# 3. 看服务日志,定位拒绝原因
sudo journalctl -b -u ssh --no-pager | tail -30
# 4. 防火墙是否放行 22
sudo ufw status verbose
sudo ufw allow 22/tcp
- 测不通:先确认两台机在同一可达网络段,再查防火墙(
ufw)是否放行 22。 - 端口通但
refused:sudo systemctl start ssh起服务,再看监听。 Permission denied:核对用户名、口令/密钥是否匹配、该用户能否 SSH 登录(AllowUsers之类配置),配置细节以条目页为准。
注意:
Connection refused与timed out含义不同,先分清是服务问题还是网络问题再动手。服务器部署基线见 Ubuntu 26.04.1 服务器条目,各版本总览见 Ubuntu 索引;Debian 的 SSH 排查路径类似,参考 Debian 索引。
操作小结
ping+nc -zv <ip> 22先分网络/端口层。systemctl status ssh+ss -ltnp确认服务监听。journalctl -u ssh看拒绝原因。ufw放行 22;认证问题再核用户/密钥。