切換選單
切換偏好設定選單
切換個人選單
尚未登入
若您做出任何編輯,會公開您的 IP 位址。

KiwiVM Amy使用技巧:用中文讓它幫我排查 VPS 連接問題

出自md5.pw
Kris留言 | 貢獻2026年6月20日 (六) 04:20的修訂
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)


最近搬瓦工 KiwiVM 面板里的Assistant Amy好像升級了,所以在這裡進行一下測試。

這個功能從買搬瓦工到現在就從來沒有用過,以為它只是一個普通的 AI 聊天窗口,最多幫忙解釋一下 Linux 命令。但今天實際打開看了一下,它不是單純聊天,而是直接集成在 KiwiVM 面板里的 VPS 助手。

Amy 自己的介紹里寫得很直接:它可以診斷 VM、檢查控制台、運行命令,並且在需要的時候執行 KiwiVM 控制面板相關操作。

對於很多老手來說,這可能只是多了一個方便工具。但我感覺這個功能 對 VPS 新手來說算是很有用了,遇到伺服器一些解決不了的問題時,可以直接用中文描述現象,讓它幫你按順序排查。可以說這個功能大大降低了新手的學習成本

誰沒有第一次用伺服器的時候呢,想當初我開的第一台機我連怎麼用finalshell連接都不會,最後還是在網上搜索了很久才解決的。所以這次我主要測試的是 VPS 連接問題。因為這是新手最常遇到,也最容易慌的場景。

比如:

  • 伺服器到底是不是正常在線?
  • ping 通了,為什麼 SSH 還是連不上?
  • SSH 服務有沒有運行?
  • 防火牆有沒有擋住埠?
  • 修改 SSH 埠會不會把自己鎖在外面?
  • 最近有沒有異常登錄嘗試?

下面是我這次準備測試的幾個場景。


一、打開 Amy

在 KiwiVM 面板左側菜單裡可以看到 Assistant Amy,點進去以後會彈出一個獨立窗口。

可以看到界面里的提示是:

Hello! I'm Amy, your VPS assistant. I can diagnose the VM, inspect the console, run commands, and perform KiwiVM control panel actions when needed. How can I assist? 您好!我是您的VPS助理Amy。我可以診斷虛擬機、檢查控制台、運行命令,並在需要時執行KiwiVM控制面板操作。我能幫您什麼?

下面的測試沒有用複雜英文,也沒有提前準備命令,單純直接用中文問它,看它能不能理解並給出實際排查思路。


二、讓 Amy 檢查 VPS 當前狀態

遇到 VPS 出問題時,我以前很容易第一反應就是重啟。但很多時候重啟並不能解決問題,反而會把問題現場清掉。

所以第一步我先讓 Amy 做一次基礎檢查。

直接用中文問:

請幫我檢查這台 VPS 當前是否正常在線,包括系統負載、內存、磁碟、網絡狀態和 SSH 狀態。如果發現異常,請告訴我可能的原因。

Amy完整回答

檢查完成:這台 VPS 當前看起來是正常在線的 ✅

  • 運行狀態:RUNNING,系統已正常啟動,運行時間約 11 小時 29 分
  • 公網 IPv4:80.251.**.**
  • 公網連通性:
    • Ping 可達,丟包率 0%
    • SSH 埠 22/tcp 從公網可達
  • SSH 狀態:
    • sshd.service 正在運行
    • 正在監聽 0.0.0.0:22[::]:22
    • 配置允許密碼登錄、公鑰登錄、root 登錄
  • 系統負載:
    • load average:0.00 0.00 0.00
    • CPU 基本空閒,未發現 CPU throttling
  • 內存:
    • 總內存約 2023 MB
    • 已用約 374 MB
    • 可用約 1649 MB
    • Swap 總量 1024 MB,當前使用 0 MB
  • 磁碟:
    • 根分區 /:38G 總量,已用 2.0G,使用率 6%
    • /boot:使用率 10%
    • 未發現磁碟空間壓力
    • 未發現磁碟 I/O 限速
  • 網絡配置:
    • eth0 已 UP
    • IP:80.251.**.**/22
    • 默認網關:80.251.**.**
    • 防火牆 iptables INPUT/OUTPUT/FORWARD 默認 ACCEPT,沒有明顯攔截規則
  • 服務狀態:
    • NetworkManager、sshd、qemu guest agent、chronyd、crond 均正常運行
    • x-ui.service 也在運行,並監聽 220922096 等埠

目前沒有發現明顯異常。IP 沒有被 nullroute/黑洞,服務也沒有被暫停,未檢測到政策違規狀態。

你也可以自行複測公網狀態:

結論:VPS 當前在線且狀態健康,SSH 可從公網訪問。

這個問題適合用在任何不確定伺服器狀態的時候。

比如你覺得機器卡了、服務打不開、SSH 偶爾斷開,都可以先讓 Amy 看一遍基礎狀態。

它主要可以幫忙確認這些內容:

  • VPS 是否正常運行;
  • CPU / 負載是否異常;
  • 內存是否緊張;
  • 磁碟是否快滿;
  • 網絡狀態是否正常;
  • SSH 服務是否正常;
  • 系統日誌里有沒有明顯錯誤。

以前這些內容需要自己登錄 SSH 後分別執行命令查看。現在可以先讓 Amy 做第一輪檢查。

這個功能對新手比較友好,因為很多人不是不會複製命令,而是不知道第一步該查什麼。


三、ping 通但 SSH 連不上,讓 Amy 按步驟排查

第二個場景是我覺得最常見的:伺服器能 ping 通,但是 SSH 連不上。

很多新手會誤以為 ping 通就代表伺服器沒問題。實際上 ping 走的是 ICMP,SSH 走的是 TCP。ping 通只能說明伺服器對 ICMP 有回應,不代表 SSH 埠一定能連上。

直接用中文問:

我現在可以 ping 通這台 VPS,但是 SSH 連接不上。請幫我按步驟排查原因,重點檢查 SSH 服務、SSH 埠、防火牆規則和網絡連通性。

Amy完整回答

我已按步驟排查完了。結論先說:VPS 端 SSH 服務本身是正常的,22 埠從公網可達,防火牆沒有阻斷。 如果你本地仍然 SSH 連不上,更可能是本地網絡/運營商到該 IP:22 的路徑問題、客戶端參數/用戶名密碼/密鑰問題,或臨時被外部掃描連接干擾。

1. VPS 基礎在線狀態

  • VPS 狀態:RUNNING
  • 公網 IPv4:80.251.**.**
  • 沒有 nullroute / 黑洞
  • 沒有暫停、沒有檢測到政策違規
  • 系統負載:0.00 0.00 0.00
  • 內存、磁碟都正常,沒有資源壓力

2. SSH 服務狀態

sshd.service 當前狀態:

  • active running
  • 已運行約 11 小時
  • 配置語法檢查通過:sshd_config OK

有效 SSH 配置里關鍵項如下:

port 22
listenaddress 0.0.0.0:22
listenaddress [::]:22
permitrootlogin yes
passwordauthentication yes
pubkeyauthentication yes
authenticationmethods any
maxstartups 10:30:100

說明:

  • SSH 埠是 22
  • 同時監聽 IPv4 和 IPv6
  • 允許 root 登錄
  • 允許密碼登錄
  • 允許公鑰登錄
  • 配置文件沒有語法錯誤

3. SSH 埠監聽狀態

系統內部確認 SSH 正在監聽:

0.0.0.0:22    sshd
[::]:22       sshd

這表示 VPS 內部 SSH 埠沒有問題,不是 sshd 沒啟動或只監聽本地地址導致的。

4. 防火牆規則

檢查結果:

  • firewalld:inactive
  • iptables 默認策略:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

沒有看到阻斷 22 埠的規則。

所以目前看,VPS 內部防火牆沒有攔截 SSH。

5. 公網連通性測試

我從外部公網探測了這台 VPS:

  • Ping:可達
  • TCP 22:可達
  • SSH banner:能讀到

外部探測返回的 SSH banner 是:

SSH-2.0-OpenSSH_9.9

這說明從公網至少有探測節點可以正常連到你的 80.251.**.**:22,並且 sshd 有響應。

你也可以自行複測:

6. 發現的可疑情況

SSH 日誌里看到來自 91.92.40.43 的大量失敗登錄嘗試,例如:

Failed password for root from 91.92.40.43
Invalid user admin
Invalid user deploy
Invalid user bob
Invalid user hadoop

並且當前還有一些到 22 埠的 SYN-RECV 連接來自同一個 IP:

80.251.**.**:22  91.92.40.43:xxxxx  SYN-RECV

這看起來像是常見的 SSH 掃描/爆破嘗試。

目前數量不算特別誇張,sshd 也沒有被打滿,但它可能會造成短時間連接變慢或偶發連接失敗,尤其是在 MaxStartups 限制觸發時。

當前判斷

伺服器端目前沒有發現這些問題:

  • SSH 服務未啟動:沒有
  • SSH 埠沒監聽:沒有
  • SSH 配置錯誤:沒有
  • 防火牆阻斷:沒有
  • IP 被黑洞/nullroute:沒有
  • VPS 資源耗盡:沒有
  • 公網 22 埠完全不可達:沒有

更可能的原因是:

  1. 你本地網絡或運營商阻斷/干擾了出站 TCP 22
  2. 你連接的埠、用戶名、密碼或密鑰不正確
  3. 本地 SSH 客戶端報錯屬於認證問題,而不是網絡問題
  4. SSH 正在被掃描,偶發觸發連接限制
  5. 如果你用的是公司、校園、機場、代理網絡,可能禁止 22 埠

建議你下一步確認

你可以把你本地 SSH 的具體報錯發給我,例如:

Connection timed out
Connection refused
Permission denied
No route to host
Connection reset by peer
Permission denied (publickey,password)

不同報錯對應的原因不一樣。

如果你願意,我也可以繼續幫你做兩件事之一:

  1. 給 SSH 增加一個備用埠,比如 2222,降低被本地網絡屏蔽 22 埠影響的概率。
  2. 臨時封禁正在掃描的 IP 91.92.40.43,減少 SSH 掃描干擾。

這個場景下,Amy 可以幫忙把問題拆開。

一般來說,ping 通但 SSH 連不上,可能有這些原因:

  • SSH 服務沒有運行;
  • SSH 埠不是默認 22;
  • SSH 正常監聽,但防火牆沒有放行;
  • SSH 配置被改錯;禁用了 root 登錄或密碼登錄;
  • 本地網絡到伺服器 TCP 埠不通;
  • 登錄失敗太多,被安全規則臨時限制。

這個地方 Amy 的價值不是簡單給一個命令,而是把排查順序列出來。

比較合理的順序應該是:

  1. 先確認 VPS 是否在線;
  2. 再確認 SSH 服務是否運行;
  3. 再確認 SSH 實際監聽哪個埠;
  4. 再看防火牆是否放行這個埠;
  5. 再判斷是不是本地網絡或外部線路問題;
  6. 最後檢查 SSH 配置和登錄方式。

這比一上來就重啟或者重裝系統穩很多。


四、讓 Amy 檢查防火牆有沒有擋住 SSH

VPS 新手很容易在防火牆上翻車。

比如剛學會 ufw、iptables 或 firewalld,就想加幾條規則提高安全性。但如果 SSH 埠沒有提前放行,很可能規則一啟用,自己就連不上了。

所以我繼續問 Amy:

請幫我檢查當前防火牆規則有沒有可能擋住 SSH 連接。如果我要修改 SSH 埠,應該提前檢查哪些地方,避免把自己鎖在伺服器外面?

Amy完整回答

我剛幫你檢查了當前狀態:現在的防火牆規則不會擋住 SSH 連接。✅

當前結果如下:

  • VPS 公網 IP:80.251.**.**
  • SSH 當前監聽埠:22
  • sshd 正在監聽:
    • 0.0.0.0:22
    • [::]:22
  • firewalld:未運行 / inactive
  • iptables:規則為空,默認 ACCEPT
  • nftables:沒有規則集
  • 公網探測 SSH 埠 22:可連接
  • SSH banner 正常返回:SSH-2.0-OpenSSH_9.9

你也可以用這個連結自己從外部複測 SSH 埠:


如果你要修改 SSH 埠,建議提前檢查這些地方,避免把自己鎖在伺服器外面:

1. 確認新埠沒有被占用

當前已經在監聽的埠包括:

  • 22:SSH
  • 2096:x-ui
  • 22092:x-ui
  • 127.0.0.1:11111
  • 127.0.0.1:62789

建議不要使用已經被占用的埠。可以選一個未使用的高位埠,比如 2222202222022 等。


2. 不要直接替換埠,先雙埠監聽

安全做法是先讓 SSH 同時監聽舊埠和新埠,例如:

Port 22
Port 2222

確認新埠可以登錄後,再考慮移除 Port 22


3. 先放行防火牆,再改 SSH

你這台機器目前沒有啟用 firewalld/iptables/nftables 攔截,所以現在改埠本身不會被現有防火牆擋住。

但如果之後啟用了防火牆,需要提前放行新埠,例如 firewalld 環境一般是:

firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload

如果用了 nftables 或 iptables,也要在對應規則里允許新埠。


4. AlmaLinux/RHEL 系系統要注意 SELinux

如果 SELinux 是 enforcing,新 SSH 埠可能還需要加入 ssh_port_t,例如:

semanage port -a -t ssh_port_t -p tcp 2222

如果埠已經存在於其他類型,可能需要用 -m 修改。


5. 修改後先檢查配置語法

改完 SSH 配置後,先跑:

sshd -t

只有沒有報錯,再 reload SSH:

systemctl reload sshd

不要一上來就重啟機器。


6. 保留當前連接或 KiwiVM 面板入口

修改埠時建議:

  • 不要關閉當前 SSH 會話;
  • 新開一個窗口測試新埠;
  • 如果新埠登錄成功,再移除舊埠;
  • 萬一出錯,還可以通過 KiwiVM 的 Root Shell / Interactive 入口修復。

7. 用公網探測確認新埠開放

改完後要從公網測試新埠,不要只在伺服器內部看監聽。內部 ss -tulnp 只能說明服務在監聽,不代表公網能連通。

例如如果新埠是 2222,需要確認:

ssh -p 2222 root@80.251.**.**

或者用外部 TCP 測試。


8. 不建議同時修改多個 SSH 安全項

為了避免排障困難,建議不要同時做這些事:

  • 改 SSH 埠;
  • 禁用密碼登錄;
  • 禁用 root 登錄;
  • 改防火牆默認策略;
  • 改 SELinux;
  • 重啟網絡服務。

最好一次只改一項,確認能登錄後再繼續。


如果你願意,我也可以幫你按「安全雙埠方式」修改,比如先讓 SSH 同時監聽 22 和你指定的新埠,公網確認新埠可用後,再由你決定是否關閉 22。

這個問題非常實用。

修改 SSH 埠之前,至少應該確認這些事情:

  • 當前 SSH 正在監聽哪個埠;
  • 新埠是否已經寫入 SSH 配置;
  • 防火牆是否放行新埠;
  • 舊的 SSH 連接先不要斷開;
  • 新埠能成功連接後,再考慮關閉舊埠;
  • KiwiVM 控制台最好保持可用,防止自己被鎖在外面。

Amy 如果能在操作前提醒這些風險,就比單純給命令更有用。

我覺得這個功能對新手最大的幫助,就是可以減少一些低級但嚴重的錯誤。比如防火牆規則寫錯、SSH 埠沒放行、登錄方式改錯,這些問題本身不複雜,但一旦把自己鎖在外面,處理起來就麻煩了。


五、讓 Amy 檢查最近有沒有異常 SSH 登錄記錄

除了連不上伺服器,SSH 安全也很適合讓 Amy 幫忙看。

VPS 開在公網以後,經常會遇到各種掃描和暴力嘗試。很多新手平時不會主動看日誌,也不知道日誌里的 failed password、invalid user 這些記錄代表什麼。

直接用中文問:

請幫我檢查這台 VPS 最近有沒有異常 SSH 登錄失敗記錄。如果有,請幫我總結來源、頻率,並給出適合新手的基礎安全建議。

Amy完整回答

我已檢查最近 SSH 登錄日誌。結論:有異常 SSH 登錄失敗記錄,表現為常見的自動化掃描/暴力破解嘗試;暫未發現成功 SSH 登錄記錄。

檢查範圍

  • 當前時間:2026-06-18 06:11 UTC
  • VPS 已運行:約 11 小時 39 分鐘
  • 我查詢了最近 24 小時的 sshd 日誌;由於機器本次啟動時間約 11 小時多,實際可見日誌主要是本次開機以來的記錄。

SSH 服務狀態

SSH 服務本身正常:

  • sshd.service:active running
  • 監聽埠:22
  • 當前 SSH 配置重點項:
Port 22
PermitRootLogin yes
PasswordAuthentication yes
PubkeyAuthentication yes
MaxAuthTries 6
MaxStartups 10:30:100

這說明目前 SSH 允許:

  • root 直接登錄
  • 密碼登錄
  • 公鑰登錄

從安全角度看,root + 密碼登錄 + 默認 22 埠比較容易被自動掃描器盯上。

最近失敗登錄統計

最近日誌中共發現:

134 条 SSH 失败/异常认证相关记录

主要來源 IP:

111 次  91.92.40.43
2 次    91.92.40.12
2 次    43.128.81.242
2 次    34.14.46.90
2 次    212.227.235.203
1 次    41.42.214.101
1 次    185.226.197.30
1 次    101.126.135.131

最明顯的是:

91.92.40.43

它貢獻了絕大多數失敗記錄,屬於高度可疑來源。

失敗頻率分布

按小時統計:

2026-06-17 20:00  2 次
2026-06-17 21:00  3 次
2026-06-17 23:00  2 次
2026-06-18 00:00  1 次
2026-06-18 01:00  2 次
2026-06-18 02:00  1 次
2026-06-18 03:00  4 次
2026-06-18 04:00  66 次
2026-06-18 05:00  51 次
2026-06-18 06:00  2 次

可以看到異常主要集中在:

  • 04:00 - 05:00 UTC
  • 05:00 - 06:00 UTC

這兩個小時內嘗試次數明顯上升,符合自動化爆破/掃描特徵。

被嘗試的用戶名

常見被嘗試用戶名包括:

admin      12 次
root       9 次
ubuntu     8 次
user       4 次
deployer   4 次
claude     4 次
bot        4 次
bob        4 次
azureuser  4 次

還包括很多常見弱口令掃描用戶名,例如:

test
pi
www
web
repo
hadoop
elasticsearch
deploy

這進一步說明這些不是正常用戶登錄失敗,而是網際網路上常見的自動化 SSH 掃描。

是否發現成功 SSH 登錄?

沒有發現成功 SSH 登錄記錄:

Accepted password/publickey: 0 条

last 里也沒有看到最近用戶登錄會話,只有系統啟動記錄。

所以目前看:

有暴力破解/掃描嘗試,但沒有證據顯示 SSH 已被成功登錄。

當前是否還有可疑連接?

檢查時仍看到一些到 SSH 埠的半連接/嘗試連接,來源包括:

91.92.40.43
35.205.166.70

其中 91.92.40.43 和前面的失敗登錄來源一致,仍然比較可疑。

風險判斷

當前風險等級我會評估為:中等偏低到中等。

原因:

  • ✅ 沒發現成功登錄
  • ✅ SSH 服務正常
  • ✅ 系統負載、內存沒有異常
  • ⚠️ 但 SSH 暴露在公網 22
  • ⚠️ 允許 root 登錄
  • ⚠️ 允許密碼登錄
  • ⚠️ 已經被自動化掃描器盯上

如果 root 密碼足夠強,短期問題不大;但長期建議加固。

適合新手的基礎安全建議

建議按優先級處理:

1. 使用強密碼

如果你暫時還需要密碼登錄,root 密碼一定要足夠複雜:

  • 至少 16 位以上
  • 包含大小寫字母、數字、符號
  • 不要使用生日、手機號、常見單詞、重複密碼

2. 儘量改用 SSH 密鑰登錄

這是最推薦的方式。

做法是:

  • 在你電腦上生成 SSH key
  • 把公鑰放到 VPS 的 /root/.ssh/authorized_keys
  • 確認密鑰可以登錄後,再關閉密碼登錄

這樣即使別人知道用戶名,也很難爆破成功。

3. 禁止 root 直接 SSH 登錄

更安全的做法是:

  • 創建一個普通用戶
  • 給它 sudo 權限
  • 用普通用戶 SSH 登錄
  • 登錄後再 sudo -i 切換 root

然後設置:

PermitRootLogin no

4. 關閉密碼登錄

確認 SSH 密鑰能正常登錄後,建議設置:

PasswordAuthentication no

這會大幅降低暴力破解風險。

5. 安裝 Fail2ban

Fail2ban 可以自動封禁連續登錄失敗的 IP。

例如某個 IP 連續失敗 5 次,就臨時封禁 1 小時或更久。

這對新手很實用。

6. 限制 SSH 來源 IP

如果你有固定公網 IP,最安全的是只允許你的 IP 訪問 SSH。

例如只允許你的家寬/公司 IP 訪問 22 埠,其他全部拒絕。

不過這個方法需要小心:如果你自己的 IP 變化,可能會把自己鎖在外面。

7. 可以增加一個備用 SSH 埠

比如額外監聽 2222 或其他埠。

注意:改埠不能替代安全措施,但可以減少被默認掃描器掃到的次數。

更穩妥的方式是:

  • 先保留 22
  • 增加備用埠
  • 測試備用埠能登錄
  • 再決定是否關閉 22

8. 定期檢查登錄日誌

常用關注點:

  • 是否有 Accepted password
  • 是否有陌生 IP 成功登錄
  • 是否有大量 Failed password
  • 是否有陌生用戶被創建
  • 是否有異常進程或計劃任務

我建議你下一步做什麼

比較穩妥的新手加固方案是:

  1. 先安裝並配置 Fail2ban
  2. 臨時封禁當前主要攻擊源 91.92.40.43
  3. 增加一個備用 SSH 埠,例如 2222
  4. 確認備用埠能連上
  5. 再逐步切換到密鑰登錄、關閉密碼登錄

如果你願意,我可以繼續幫你直接執行一個溫和安全方案: 安裝 Fail2ban + 封禁當前可疑 IP + 保持現有 SSH 配置不變,避免把你鎖在外面。

這個問題可以讓 Amy 幫忙做兩件事。

第一,幫忙從日誌里找重點。

比如有沒有大量失敗登錄、是不是集中來自某些 IP、有沒有 root 用戶被反覆嘗試、有沒有明顯異常時間段。

第二,給出基礎安全建議。

比如:

  • 使用強密碼;
  • 優先使用 SSH key;
  • 如果要禁用密碼登錄,先確認密鑰可用;
  • 可以考慮修改默認 SSH 埠;
  • 可以使用 fail2ban 限制暴力嘗試;
  • 不需要的埠不要開放;
  • 定期查看登錄記錄。

這類建議不算複雜,但對剛開始用 VPS 的用戶比較實用。


六、讓 Amy 生成一份 VPS 連接問題排查清單

最後我讓 Amy 直接整理一份排查清單。

直接用中文問:

請幫我整理一份 VPS 連接問題排查清單,適合新手使用。場景包括:伺服器無法 SSH、ping 通但埠不通、防火牆可能攔截、SSH 埠被修改、登錄失敗太多。請按照排查順序列出來,並說明每一步的目的。

Amy完整回答

下面是一份適合新手使用的 VPS 連接問題排查清單,按推薦排查順序整理。你可以從上到下一步步看,避免一開始就改防火牆或重裝系統。


VPS 連接問題排查清單

適用場景:

  • VPS 無法 SSH
  • 能 ping 通,但 SSH/網站埠不通
  • 防火牆可能攔截
  • SSH 埠被修改
  • 登錄失敗太多,被限制或封禁
  • 不確定是伺服器問題還是本地網絡問題

1. 確認 VPS 是否正在運行

目的:先確認機器本身有沒有開機。

檢查內容:

  • VPS 狀態是否是 Running / Online
  • 是否剛剛重啟、遷移、重裝
  • 是否被暫停、欠費、封禁、nullroute
  • 是否還掛載著 ISO 導致沒從系統盤啟動

如果 VPS 是 stopped / offline,SSH 一定連不上。

常見現象:

ssh: connect to host x.x.x.x port 22: Connection timed out

或:

No route to host

2. 確認連接信息是否正確

目的:排除最常見的人為錯誤。

確認這些信息:

  • IP 地址是否正確
  • 用戶名是否正確,例如:
    • root
    • ubuntu
    • debian
    • centos
  • SSH 埠是否正確
  • 密碼或密鑰是否正確
  • 是否連到了舊 IP
  • 是否 VPS 遷移後 IP 已變化

常見 SSH 命令格式:

ssh root@你的服务器IP

如果埠不是 22,例如 2222:

ssh -p 2222 root@你的服务器IP

3. 先測試 ping 是否可達

目的:判斷基礎網絡是否通。

可以在本地電腦執行:

ping 你的服务器IP

結果分兩種:

情況 A:ping 不通

可能原因:

  • VPS 沒開機
  • IP 被 nullroute
  • VPS 防火牆禁 ping
  • 本地網絡到 VPS 不通
  • 伺服器網絡配置錯誤

注意: ping 不通不一定代表伺服器掛了,因為有些防火牆會禁 ICMP。

情況 B:ping 通

說明:

  • VPS IP 至少在網絡層可達
  • 但不代表 SSH 一定正常
  • 接下來要檢查埠

4. 測試 SSH 埠是否開放

目的:判斷是不是 SSH 埠不通。

默認 SSH 埠是 22

可以測試:

nc -vz 你的服务器IP 22

或:

telnet 你的服务器IP 22

也可以用網頁工具測試:

http://tcp.ping.pe/你的服务器IP:22

如果埠通

通常會看到類似:

succeeded

或者能看到 SSH banner:

SSH-2.0-OpenSSH_x.x

說明:

  • 伺服器公網 22 埠可達
  • SSH 服務大概率在運行
  • 如果還是登不上,多半是認證問題、用戶名密碼問題、密鑰問題或登錄限制

如果 ping 通但 22 埠不通

可能原因:

  • SSH 服務沒啟動
  • SSH 埠被改了
  • 防火牆攔截了 22
  • 雲平台安全組/控制面板防火牆攔截
  • sshd 只監聽本地地址
  • 伺服器負載過高導致無響應

5. 確認 SSH 埠有沒有被修改

目的:避免一直連錯埠。

SSH 默認埠是:

22

但有些系統會修改到:

2222
22022
10022

如果你有控制面板的 Root Shell,可以檢查:

ss -lntp | grep ssh

常見正常結果:

LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=xxx))

如果看到:

0.0.0.0:2222

說明 SSH 埠是 2222,連接時要用:

ssh -p 2222 root@你的服务器IP

6. 檢查 SSH 服務是否運行

目的:確認 sshd 有沒有啟動或崩潰。

在伺服器控制面板 Root Shell 里檢查:

systemctl status sshd

有些系統服務名叫 ssh

systemctl status ssh

正常狀態通常是:

active (running)

如果沒有運行,可以嘗試:

systemctl restart sshd

或:

systemctl restart ssh

再檢查:

systemctl status sshd

7. 檢查 SSH 配置是否有錯誤

目的:避免配置寫錯導致 sshd 啟動失敗。

檢查配置語法:

sshd -t

如果沒有輸出,通常表示配置語法正常。

如果有報錯,例如:

Bad configuration option

說明 /etc/ssh/sshd_config 里有錯誤,需要修復後再重啟 SSH。

常見需要檢查的配置項:

Port 22
PermitRootLogin yes
PasswordAuthentication yes
PubkeyAuthentication yes
ListenAddress 0.0.0.0

注意: 如果你還沒有確認密鑰可以登錄,不建議直接關閉密碼登錄。


8. 檢查系統防火牆

目的:確認伺服器內部有沒有攔截 SSH 埠。

常見防火牆有:

  • firewalld
  • ufw
  • iptables
  • nftables

firewalld

systemctl status firewalld
firewall-cmd --list-all

如果 SSH 埠不是 22,例如 2222,需要放行:

firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload

ufw

ufw status

放行 SSH:

ufw allow 22/tcp

或放行自定義埠:

ufw allow 2222/tcp

iptables

iptables -S
iptables -L -n -v

重點看有沒有 DROP / REJECT 規則攔截 22 或你的 SSH 埠。


9. 檢查雲平台/控制面板層面的網絡限制

目的:有些攔截不在系統裡,而在服務商層面。

需要確認:

  • VPS 是否被 nullroute
  • 是否有安全組規則
  • 是否有控制面板防火牆
  • 是否被 DDoS 防護臨時封禁埠
  • 是否服務被暫停
  • 是否 IP 更換後 DNS 沒更新

如果系統裡 SSH 正常、埠監聽正常、防火牆也沒攔,但公網不通,就要重點懷疑這一層。


10. 檢查是否因為登錄失敗太多被限制

目的:判斷是否被 Fail2ban、DenyHosts 或 sshd 自身限制。

如果你多次輸錯密碼,可能被臨時封禁。

檢查 Fail2ban:

fail2ban-client status

查看 sshd jail:

fail2ban-client status sshd

如果你的 IP 被封,可以解封:

fail2ban-client set sshd unbanip 你的本地公网IP

也可以檢查日誌:

journalctl -u sshd --since "1 hour ago"

或:

grep "Failed password" /var/log/auth.log

CentOS/RHEL 系:

grep "Failed password" /var/log/secure

11. 區分「連不上」和「登錄失敗」

目的:不同報錯代表完全不同的問題。

報錯:Connection timed out

ssh: connect to host x.x.x.x port 22: Connection timed out

常見原因:

  • 防火牆丟棄連接
  • 埠未開放
  • 路由問題
  • 服務商層面攔截
  • 本地網絡阻斷 22 埠

報錯:Connection refused

ssh: connect to host x.x.x.x port 22: Connection refused

常見原因:

  • 伺服器能到,但埠沒人監聽
  • SSH 服務沒啟動
  • SSH 監聽的是其他埠

報錯:Permission denied

Permission denied, please try again.

常見原因:

  • 用戶名錯誤
  • 密碼錯誤
  • 密鑰錯誤
  • root 登錄被禁用
  • 密碼登錄被禁用

報錯:Permission denied (publickey)

Permission denied (publickey)

常見原因:

  • 伺服器只允許密鑰登錄
  • 本地沒有使用正確私鑰
  • 公鑰沒有寫入伺服器
  • 用戶名不對

報錯:Connection reset by peer

Connection reset by peer

常見原因:

  • sshd 主動斷開
  • Fail2ban 或安全軟體攔截
  • MaxStartups 限制
  • 伺服器負載過高
  • 網絡中間設備干擾

12. 從外部第三方網絡測試

目的:判斷是不是你本地網絡的問題。

建議用外部工具測:

  • Ping:
https://ping.pe/你的服务器IP
  • TCP 埠:
http://tcp.ping.pe/你的服务器IP:22

如果第三方能連通,但你本地不能連:

可能是:

  • 你本地網絡屏蔽 22 埠
  • 公司/校園/機場網絡限制 SSH
  • 本地防火牆或安全軟體攔截
  • 運營商路由問題

可以嘗試:

  • 換網絡
  • 用手機熱點
  • 換一個 SSH 埠
  • 使用 VPN 或代理網絡

13. 檢查伺服器資源是否耗盡

目的:資源耗盡時 SSH 可能變慢或拒絕連接。

檢查負載:

uptime
top

檢查內存:

free -h

檢查磁碟:

df -h

檢查 inode:

df -i

如果磁碟 100%,可能導致:

  • SSH 登錄失敗
  • 無法寫入日誌
  • 服務異常
  • 系統響應很慢

14. 檢查 SSH 登錄日誌

目的:判斷是否有爆破、誤操作、成功登錄或異常登錄。

Debian/Ubuntu:

grep sshd /var/log/auth.log

CentOS/RHEL/Alma/Rocky:

grep sshd /var/log/secure

systemd:

journalctl -u sshd --since "24 hours ago"

重點看:

Failed password
Invalid user
Accepted password
Accepted publickey
Connection closed
maximum authentication attempts exceeded

如果看到大量:

Failed password for root
Invalid user admin
Invalid user test

說明 VPS 正在被自動掃描或爆破。


推薦排查順序總結

新手可以按這個順序走:

  1. 確認 VPS 是否開機
  - 目的:排除机器没运行
  1. 確認 IP、用戶名、埠是否正確
  - 目的:排除连错目标
  1. 測試 ping
  - 目的:确认基础网络是否可达
  1. 測試 SSH 埠
  - 目的:判断端口是否开放
  1. 檢查 SSH 服務狀態
  - 目的:确认 sshd 是否正常运行
  1. 檢查 SSH 實際監聽埠
  - 目的:确认端口是否被修改
  1. 檢查 SSH 配置語法
  - 目的:排除配置错误导致服务异常
  1. 檢查系統防火牆
  - 目的:确认端口没有被系统拦截
  1. 檢查控制面板/服務商網絡限制
  - 目的:确认不是平台层面拦截
  1. 檢查是否被 Fail2ban 或安全軟體封禁
   - 目的:排除登录失败太多导致的封禁
  1. 檢查 SSH 日誌
   - 目的:确认失败原因和是否有异常登录
  1. 換網絡或使用外部工具測試
   - 目的:判断是否为本地网络问题
  1. 檢查系統資源
   - 目的:确认不是 CPU、内存、磁盘耗尽导致 SSH 异常

新手安全建議

如果你經常遇到 SSH 掃描或登錄失敗很多,建議做這些基礎加固:

  1. 使用強密碼
  - 不要用简单密码、生日、常见单词
  1. 儘量使用 SSH 密鑰登錄
  - 比密码安全很多
  1. 安裝 Fail2ban
  - 自动封禁连续登录失败的 IP
  1. 不要輕易關閉當前 SSH 埠
  - 修改 SSH 配置前,最好先开一个备用端口并测试成功
  1. 不要在沒確認密鑰可登錄前關閉密碼登錄
  - 否则可能把自己锁在外面
  1. 定期檢查登錄日誌
  - 关注是否有陌生 IP 成功登录
  1. 如有固定 IP,可以限制 SSH 來源
  - 只允许自己的 IP 访问 SSH,安全性最高,但要小心 IP 变化

如果你願意,我也可以直接幫你把這台 VPS 按這份清單實際檢查一遍,並給出具體結論。

這個用法我覺得很適合保存下來。

因為 VPS 連接問題不是只會遇到一次。下次如果再出現類似情況,可以直接按照清單檢查,而不是每次都重新想一遍。

我比較希望 Amy 輸出的清單包含這些步驟:

  1. 先看 KiwiVM 面板里 VPS 是否運行;
  2. 檢查控制台是否能進入;
  3. 檢查系統負載、內存、磁碟是否異常;
  4. 檢查 SSH 服務是否運行;
  5. 檢查 SSH 監聽埠;
  6. 檢查防火牆是否放行 SSH 埠;
  7. 檢查 sshd 配置有沒有改錯;
  8. 檢查是否禁用了當前登錄方式;
  9. 檢查最近是否有大量登錄失敗;
  10. 判斷是否為本地網絡或外部 TCP 阻斷。

這類清單的好處是,它能讓新手先按順序排查,而不是一遇到問題就重啟、重裝或者亂改配置。


七、這次測試下來,Amy 具體能幫我做什麼?

簡單總結一下,這次測試里我覺得 Amy 比較適合做這些事情:

第一,檢查 VPS 當前狀態。

比如系統負載、內存、磁碟、網絡和 SSH 狀態。遇到伺服器異常時,可以先讓它做第一輪檢查。

第二,排查 SSH 連不上。

特別是 ping 通但 SSH 不通這種情況,Amy 可以引導用戶繼續檢查 TCP 埠、SSH 服務、防火牆和配置文件。

第三,檢查防火牆風險。

如果用戶準備改 SSH 埠、啟用防火牆、調整 iptables 規則,可以先讓 Amy 檢查是否有把自己鎖在外面的風險。

第四,查看 SSH 登錄異常。

它可以幫忙檢查最近是否有異常登錄失敗記錄,並把日誌里的重點信息總結出來。

第五,整理排查清單。

這個我覺得很實用。以後遇到類似問題,可以讓 Amy 按固定流程生成檢查步驟,避免自己亂試。

不過使用 Amy 的時候也要注意幾件事。涉及刪除文件、清空防火牆、關閉 SSH、修改登錄方式、重裝系統這類高風險操作時,不要直接無腦執行。最好先讓 Amy 解釋命令作用,確認沒有問題再操作。

以上的內容只是Amy能做的一小小部分事情,因為這篇文章主要是針對新手使用伺服器可能遇到一些連接上面的問題做出解答。所以就只講了這些,實際上Amy能做的遠遠不止於此,有需要的話可以自己研究一下。

目次