解决方案:远程shell连不上Ubuntu服务器

服务器是可以通过VNC登录,排除了是服务器本身故障

检查服务是否在全网卡监听

复制代码
sudo ss -tlnp | grep sshd

确保有一行类似

复制代码
LISTEN 0      128       0.0.0.0:22       0.0.0.0:*    users:(("sshd",pid=...,fd=3))

返回无结果,表明系统里并没有任何进程在监听 22 端口,也就连不上了。通常是因为 SSH 服务还没装或没启动。

检查 SSH 服务状态

复制代码
sudo systemctl status ssh
  • 如果看到 "Unit ssh.service could not be found",说明没装;

  • 如果看到类似 inactive (dead)failed,说明装了但没跑起来。

安装(若未安装)

复制代码
sudo apt update
sudo apt install openssh-server

启动并设为开机自启

复制代码
sudo systemctl enable --now ssh

再次确认监听

复制代码
sudo ss -tlnp | grep sshd

这时应该能看到一行 0.0.0.0:22(或 :::22)在 LISTEN。

防火墙/安全组放行

本机防火墙(UFW 举例)

复制代码
sudo ufw allow 22/tcp
sudo ufw reload

验证外部能否打通 22 端口

在本地机器上,用下面任意命令测试能不能到达服务器的 22 端口:

复制代码
telnet 你的服务器IP 22
# 或者
nc -vz 你的服务器IP 22

如果报超时或拒绝,就说明防火墙/网络还没放行 IPv4 的 22 端口。

在 Windows 上默认是没有启用 telnet 客户端的,所以 PowerShell 才提示 "CommandNotFound"。

方法一

启用 Windows 自带 Telnet 客户端

1、以管理员身份打开 PowerShell 或 CMD。

2、运行:

复制代码
dism /online /Enable-Feature /FeatureName:TelnetClient

3、等待完成后,再执行:

复制代码
telnet IP地址 22
  • 若能连通,会看到光标闪烁或 SSH 欢迎信息。

说明网络、端口和 sshd 都没问题了

  • 若仍然超时/拒绝,说明网络层面(防火墙/安全组)22 端口没放行。

方法 2:

用 PowerShell 内置的 Test-NetConnection(无需额外安装)

在普通 PowerShell 窗口直接运行:

复制代码
Test-NetConnection -ComputerName 120.27.132.21 -Port 22
  • TcpTestSucceeded: True 表示端口可达。

  • TcpTestSucceeded: False 则端口在网络层被阻断,还需要回去再检查一下:

    • 本机 UFW/iptables(或 Windows 防火墙)是否已关闭或放行 IPv4 22 端口

    • 云厂商安全组/宿主机路由是否已开放入方向 22/TCP

    • NAT/端口转发设置是否正确

相关推荐
kymjs张涛12 小时前
OpenClaw 学习小组:初识
android·linux·人工智能
程序设计实验室14 小时前
经历分享,发现挖矿木马后,服务器快速备份与重装(腾讯云平台)
linux
Miku1616 小时前
OpenClaw-Linux+飞书官方Plugin安装指南
linux·人工智能·agent
Miku1616 小时前
OpenClaw 接入 QQ Bot 完整实践指南
linux·人工智能·agent
Yogurt_cry21 小时前
[树莓派4B] 闲置近10年的爱普生 L310 打印机爆改无线打印机
linux·物联网·树莓派
爱吃橘子橙子柚子2 天前
3CPU性能排查总结(超详细)【Linux性能优化】
运维·cpu
Johny_Zhao2 天前
OpenClaw中级到高级教程
linux·人工智能·信息安全·kubernetes·云计算·yum源·系统运维·openclaw
Sheffield2 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Sheffield3 天前
Alpine是什么,为什么是Docker首选?
linux·docker·容器