Linux网络SSH故障排除(手把手教你解决远程登录连不上、连接被拒等常见问题)

V5主机测评

在使用 Linux 系统进行远程管理时,SSH(Secure Shell)是最常用且安全的工具。然而,很多初学者在尝试通过 SSH 登录远程服务器时,经常会遇到各种问题,比如“连接被拒绝”、“超时”或“权限被拒”等。本文将带你一步步排查并解决这些常见的 SSH连接失败 问题,即使你是 Linux 小白也能轻松上手!

Linux网络SSH故障排除(手把手教你解决远程登录连不上、连接被拒等常见问题)

第一步:确认目标服务器是否开启了 SSH 服务

SSH 服务默认由 sshd 守护进程提供。首先,你需要登录到目标服务器(可通过控制台或本地终端),检查 SSH 服务是否正在运行:

# 检查 SSH 服务状态(适用于 systemd 系统,如 Ubuntu 16.04+、CentOS 7+)sudo systemctl status sshd# 如果是旧版系统(如 CentOS 6),使用:sudo service sshd status

如果服务未运行,使用以下命令启动它:

sudo systemctl start sshd

同时建议设置开机自启,避免重启后无法远程登录:

sudo systemctl enable sshd

第二步:检查防火墙是否放行了 SSH 端口

SSH 默认使用 22 端口。如果服务器启用了防火墙(如 ufwfirewalld),必须确保该端口是开放的。

Ubuntu/Debian(使用 ufw):

sudo ufw allow 22/tcpsudo ufw reload

CentOS/RHEL(使用 firewalld):

sudo firewall-cmd --permanent --add-port=22/tcpsudo firewall-cmd --reload

如果你修改过 SSH 的默认端口(例如改为 2222),请确保防火墙放行的是你自定义的端口。

第三步:确认 SSH 配置文件是否正确

SSH 的主配置文件位于 /etc/ssh/sshd_config。常见的 SSH配置错误 包括禁止 root 登录、禁用密码认证等。

使用以下命令编辑配置文件:

sudo nano /etc/ssh/sshd_config

检查以下关键配置项:

  • Port 22 —— 确认端口号是否正确
  • PermitRootLogin yes —— 是否允许 root 登录(生产环境建议设为 no)
  • PasswordAuthentication yes —— 是否启用密码登录(若使用密钥登录可设为 no)
  • PubkeyAuthentication yes —— 是否启用公钥认证

修改后,务必重启 SSH 服务使配置生效:

sudo systemctl restart sshd

第四步:从客户端测试连接

在你的本地电脑(Windows/macOS/Linux)上,使用以下命令测试连接:

ssh username@server_ip# 如果使用非默认端口,例如 2222:ssh -p 2222 username@server_ip

如果出现 远程登录问题,可以加上 -v 参数查看详细日志:

ssh -v username@server_ip

日志会显示连接过程中的每一步,帮助你定位是在认证阶段还是网络阶段出错。

第五步:其他常见问题排查

  • IP 地址是否正确? 使用 ip aifconfig 确认服务器 IP。
  • 网络是否连通? 在客户端执行 ping server_ip 测试基础连通性。
  • SELinux 是否阻止了 SSH?(仅限 CentOS/RHEL)可临时禁用 SELinux 测试:
    sudo setenforce 0(重启后恢复)
  • 用户家目录或 .ssh 目录权限错误? SSH 对权限非常敏感,确保:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

总结

通过以上五个步骤,你可以系统地排查大多数 Linux网络故障 中与 SSH 相关的问题。记住:先确认服务是否运行,再检查防火墙和配置,最后从客户端验证。掌握这些方法后,你将不再害怕“连不上服务器”的尴尬局面!

提示:生产环境中建议使用密钥登录并禁用 root 密码登录,以提升安全性。

文章版权声明:除非注明,否则均为V5主机测评网_性价比VPS_性价比云服务器_免费独立服务器原创文章,转载或复制请以超链接形式并注明出处。