请遵循以下排查步骤,绝大多数情况下都能找到问题所在并解决。
1、检查网络连通性
命令ping <你的服务器IP>
现象 如果ping
不通(请求超时/100% 丢包),说明你的电脑根本找不到这台服务器。
可能原因
* 服务器已关机或崩溃。
* 你的本地网络有问题(断网了?)。
* 服务器IP地址变更了(尤其是在云服务上,重启后可能变更)。
* 服务器所在的云平台安全组/防火墙丢弃了所有数据包(包括ICMP)。
2、检查SSH端口连通性
命令telnet <你的服务器IP> 22
或者nc -zv <你的服务器IP> 22
现象
连接被拒绝 (Connection refused)通常意味着SSH服务没有运行,或者没有监听在22端口。
连接超时 (Connection timed out)通常意味着有防火墙(本地iptables或云平台安全组)拦截了22端口的连接。
成功连接会看到一些SSH的版本信息,这说明网络和端口是通的,问题出在认证或其他配置上。
3、检查你的登录命令
确认IP、用户名、端口号是否正确。
如果你使用密钥登录,请确认指定了正确的私钥文件ssh -i /path/to/your/private_key root@server_ip
确保你的私钥文件权限是正确的(过于开放的权限会导致SSH拒绝使用它)
chmod 600 /path/to/your/private_key
第二步:服务器端问题排查(需要其他访问方式)
如果第一步表明网络或端口不通,或者你无法通过任何SSH方式连接,你需要通过其他途径来访问服务器,以检查其内部状态,这对于云服务器(如AWS、阿里云、腾讯云等)尤其重要。
1、使用云平台的VNC/Console控制台
* 这是最重要的救命稻草!所有主流云服务商(AWS, Google Cloud, Azure, 阿里云, 腾讯云等)都提供了基于网页的虚拟控制台。
操作 登录到云服务商的管理后台,找到你的服务器实例,会有“连接”、“VNC”、“远程连接”等选项。
通过控制台你可以
* 查看服务器是否已经正常启动完成,还是卡在了启动阶段。
* 直接以root身份(或其他用户)登录系统,进行检查和修复。
2、检查SSH服务状态(通过控制台登录后)
命令
systemctl status sshd # 对于大多数使用Systemd的现代Linux(Ubuntu, CentOS 7+) # 或者 service sshd status # 对于旧版系统使用SysVinit
如果服务没运行,启动它
systemctl start sshd systemctl enable sshd # 设置开机自启
3、检查防火墙规则(通过控制台登录后)
检查iptables防火墙
iptables -L -n # 查看当前规则
如果看到有规则丢弃(DROP)了22端口的流量,你需要添加允许规则,或者清空规则(临时解决)
iptables -F # 清空所有规则(谨慎操作!生产环境需确认) systemctl restart iptables # 或 firewalld
对于云服务器,务必检查安全组 (Security Group) 规则!
* 这是云平台层面的防火墙,独立于服务器内部的iptables。
操作 在云管理后台,找到你的服务器关联的安全组,确保有一条“入方向” 规则,允许TCP 协议,端口号为22,来源(Source)为0.0.0.0/0
(允许所有IP)或者你的公网IP。
4、检查SSH配置文件(通过控制台登录后)
配置文件路径/etc/ssh/sshd_config
检查以下关键配置项是否正确
Port 22
确认SSH端口号(如果你修改过,连接时需要用-p
指定)。
PermitRootLogin yes
必须确保这项是yes
或者prohibit-password
(允许密钥登录),如果它是no
,则禁止root直接登录。
PasswordAuthentication yes
如果这项是no
,而你又在使用密码登录,则会失败,确保它和你的登录方式匹配。
AllowUsers
或DenyUsers
检查是否你的用户被明确允许或拒绝了。
修改配置后,必须重启SSH服务
systemctl restart sshd
*注意:重启sshd服务不会断开现有连接,所以通过控制台操作是安全的。
5、检查磁盘空间(通过控制台登录后)
* 如果磁盘空间耗尽(尤其是根分区/
),可能导致SSH无法正常写入日志或认证信息,从而登录失败。
命令df -h
* 如果发现使用率100%,需要清理磁盘空间(删除日志文件/var/log/
、清理临时文件、删除无用软件等)。
如果以上所有步骤都无法解决,可能遇到了更复杂的问题。
1、系统负载过高或资源耗尽
* 通过控制台登录后,使用top
或htop
命令查看CPU和内存使用情况,如果系统完全无响应,可能需要硬重启。
2、文件系统损坏
* 服务器启动时可能会卡在文件系统检查(fsck)阶段,通过控制台可以看到错误信息,通常需要进入救援模式进行修复。
3、使用救援模式 (Rescue Mode) / 恢复镜像
* 几乎所有云服务商都提供“救援模式”或“恢复镜像”功能。
它的工作原理是用一套干净健康的系统镜像启动你的服务器,并将你原来的系统硬盘挂载为数据盘,这样你就可以像操作普通数据一样,去检查和修复你原系统盘里的配置文件(如/etc/ssh/sshd_config
、/etc/fstab
等)。
* 这是修复严重系统错误的终极武器。
1、本地网络/端口检查 (ping
,telnet
) -> 不通?
2、通过云控制台登录 -> 能登录?
3、检查内部服务/防火墙 (systemctl status sshd
,iptables -L
) -> 有问题就修复。
4、检查SSH配置 (/etc/ssh/sshd_config
) -> 有问题就修改并重启。
5、检查资源 (df -h
,top
) -> 满了就清理。
6、最终手段 -> 启用救援模式进行修复。
请告诉我你进行到哪一步,遇到了什么具体现象(ping 结果、telnet 结果、控制台看到了什么),我可以给你更精确的指导。
文章摘自:https://idc.huochengrm.cn/fwq/13883.html
评论