Linux服务器SSH无法访问的排查与解决方法
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
当 Linux 服务器的 SSH 无法访问时,首先检查网络连接是否正常,确保服务器和客户端之间的网络畅通,确认 SSH 服务是否已启动,可通过systemctl status sshd
查看状态并使用sudo systemctl start sshd
启动服务,检查防火墙设置,确保允许 SSH 端口(默认22)通过,查看/var/log/secure
日志文件以获取更多错误信息,若问题依旧,考虑更新 SSH 密钥或检查用户权限配置。
在日常使用 Linux 服务器的过程中,SSH(Secure Shell)作为一种不可或缺的远程登录工具,不仅保障了用户的安全性,还极大地提高了服务器管理和操作的效率,在实际应用中,SSH 连接时常会遭遇各种故障,这不仅影响工作效率,也可能带来安全隐患,本文将详细探讨如何排查和解决 Linux 服务器上 SSH 无法访问的问题,并提供一系列优化建议,帮助你更高效、安全地管理你的服务器。
- 连接超时:提示“Connection timed out”,表示请求未能及时得到响应。
- 主机名或 IP 地址错误:提示“Host not found”,表明目标服务器未被识别。
- 拒绝连接:提示“Permission denied (publickey,password)”,意味着身份验证失败。
- 端口被防火墙阻止:提示“Connection refused”,说明防火墙规则禁止了 SSH 请求。
这些问题通常由网络配置、SSH 配置文件、权限设置以及防火墙规则等多种因素引起,下面我们将逐一分析这些问题的原因,并提供详细的解决方案。
常见原因及解决方法
网络设置问题
-
检查网络连接:首先确保你的设备能够访问互联网,并且可以使用
ping <server_ip>
命令成功 ping 到目标服务器的 IP 地址,ping 失败,可能是网络链路问题或目标服务器未开启相应服务。 -
DNS 解析错误:如果你使用的是域名而非 IP 地址,DNS 解析错误可能导致连接失败,可以通过编辑
/etc/hosts
文件或检查/etc/resolv.conf
中的 DNS 服务器配置来解决此问题。
SSH 配置文件问题
-
检查 SSH 配置文件:编辑
/etc/ssh/sshd_config
文件,确保以下关键配置正确无误:- Port:指定 SSH 使用的端口号,默认为 22,若更改端口号,务必保证客户端同样设置为该端口。
- PermitRootLogin:默认情况下禁用 root 用户直接登录,建议通过普通用户登录后再切换至 root。
- PasswordAuthentication:默认禁用密码认证,推荐使用公钥认证以增强安全性,如需启用密码认证,请设置为
yes
。 - PubkeyAuthentication:确保此项设置为
yes
,以启用公钥认证。 - AuthorizedKeysFile:指定用户公钥的存储路径,默认为
~/.ssh/authorized_keys
。
-
重启 SSH 服务:修改配置文件后,务必运行
sudo systemctl restart sshd
以使更改生效。
权限设置问题
-
检查目录和文件权限:确保用户主目录及其
.ssh
子目录具有适当的权限,通常情况下,用户主目录应设置为700
,.ssh
目录应为700
,authorized_keys
文件应为600
。 -
验证公钥是否正确添加:登录服务器并检查
~/.ssh/authorized_keys
文件,确保公钥已被正确添加,且没有多余空行或特殊字符。
防火墙规则问题
-
检查防火墙设置:如果启用了防火墙,需确保其允许 SSH 流量通过,你可以通过以下命令查看防火墙状态:
sudo ufw status
如果发现防火墙阻止了 SSH 连接,可以使用以下命令开放相关端口:
sudo ufw allow ssh
或者指定具体的端口号:
sudo ufw allow 22/tcp
-
重启防火墙服务:执行上述命令后,还需重启防火墙服务:
sudo systemctl restart ufw
SELinux 设置问题
-
临时关闭 SELinux:如果怀疑 SELinux 导致了 SSH 连接失败,可以尝试临时将其关闭:
sudo setenforce 0
如果问题得以解决,则可以进一步调整 SELinux 策略。
-
永久修改 SELinux 配置:若决定长期关闭 SELinux,可在
/etc/selinux/config
文件中将SELINUX=enforcing
修改为SELINUX=disabled
,并重新启动系统。
其他注意事项
-
日志文件:遇到 SSH 连接问题时,查看相关日志文件可以帮助你更好地诊断问题,常用的日志文件包括:
/var/log/auth.log
:记录所有用户的登录尝试信息。/var/log/secure
:记录 SSH 服务的日志信息。
-
时间同步:确保客户端与服务器之间的系统时间保持一致,较大的时间差可能导致公钥认证失败,推荐使用 NTP(Network Time Protocol)进行时间同步。
-
使用非标准端口:为了防止暴力破解攻击,建议使用非标准端口代替默认的 22 端口,这样做需要同时更新客户端配置文件中的相应设置。