SSH 连接不上的问题可能由多种原因导致,以下是常见的排查步骤和解决方案:
一、网络连接问题
-
检查网络状态
确保设备已正常联网,可通过
ping
命令测试与目标服务器的连通性。例如:ping <服务器IP地址>
若无法ping通,需检查网络线路或联系网络服务商咨询。
-
检查防火墙设置
-
服务器端 :确保SSH端口(默认22)开放,可通过以下命令检查:
sudo ufw status
若防火墙阻止了该端口,需添加规则允许连接:
sudo ufw allow 22
-
客户端 :检查本地防火墙是否允许出站SSH连接。
-
-
检查路由器设置
若通过局域网连接,需在路由器后台允许SSH端口(22)的入站流量,或尝试直接连接服务器绕过路由器测试。
二、SSH服务状态
-
确认SSH服务运行
在服务器端执行:
sudo systemctl status sshd
若服务未运行,需启动它:
sudo systemctl start sshd
对于使用
init.d
的系统,可用:sudo /etc/init.d/sshd start
-
检查SSH配置文件
-
打开配置文件:
sudo nano /etc/ssh/sshd_config
-
确认以下设置正确:
-
Port 22
(默认端口)未被修改 -
PermitRootLogin
(若需root登录)设置为yes
(Linux系统) -
PasswordAuthentication
允许密码认证(若使用密钥认证则关闭)
-
-
修改后重启服务:
sudo systemctl restart sshd
-
三、权限与认证问题
-
检查文件权限
-
确保SSH目录权限正确:
sudo chown root:root /etc/ssh sudo chmod 700 /etc/ssh
-
确认用户主目录
.ssh
权限为700
,且authorized_keys
文件存在且权限为600
:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
-
-
密钥认证问题
-
确认私钥文件存在且可读:
ls -l ~/.ssh/id_rsa
-
确保公钥已添加到服务器
~/.ssh/authorized_keys
:cat ~/.ssh/id_rsa.pub | ssh user@server "cat >> ~/.ssh/authorized_keys"
-
-
账户锁定或密码错误
-
检查账户是否被锁定:
sudo passwd -l user
-
若忘记密码,可通过
ssh -p 22 user@server "sudo passwd user"
重置密码。
-
四、其他常见问题
-
SELinux限制 (Linux系统):若SELinux处于 enforcing 模式,可能阻止SSH连接。可临时设置为 permissive 模式测试:
sudo setenforce 0
-
IP地址变更 :若服务器IP更改,需更新客户端配置文件(如
~/.ssh/config
)中的Host条目。 -
服务崩溃 :若SSH服务频繁崩溃,需检查系统日志(如
/var/log/syslog
)获取错误信息。
通过以上步骤逐步排查,多数SSH连接问题可得到解决。若仍无法连接,建议提供具体错误代码或日志信息进一步分析。