解决方案:远程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/端口转发设置是否正确

相关推荐
一起逃去看海吧37 分钟前
dify-03
java·linux·开发语言
fengyehongWorld38 分钟前
Linux 根据端口进行的相关查询
linux
lihao lihao41 分钟前
linux匿名管道
linux·运维·服务器
うちは止水43 分钟前
weston出图调试
linux·wayland·weston
STDD1 小时前
Farming Simulator 25(模拟农场 25) Linux 专服搭建完全指南
linux·运维·javascript
STDD1 小时前
Glances:跨平台系统资源监控,浏览器实时查看服务器状态
运维·服务器
好好风格1 小时前
宝塔面板 HTTPS 端口证书不生效排查记录
linux·运维·nginx
Forget_85502 小时前
HCIA——计算机网络诞生与发展
服务器·网络·计算机网络
xiaoshuaishuai82 小时前
C# AvaloniaUI 资源找不到报错
java·服务器·前端·windows·c#