服務器是可以通過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/端口轉發設置是否正確
-