【GCP常見問答】無法 SSH 的常見解決方式

當遇到無法 SSH 的時候,有哪些方式可以做初步的問題排解呢?

情境

我們常會遇到客戶表示機器突然無法 SSH,以下統整了一些常見的狀況以及解決方式。這些方式未必能完全解決問題,但能夠讓大家做初步的問題排解,以縮小後續排查範圍。

操作

方法 1. 檢查防火牆規則有沒有開放 22 port 和 network tag 是否正確

方法 2. 檢查 VM 的 CPU / RAM 使用率。一般來說,CPU 使用率達到 80-90% 時,容易造成 VM 太忙無法回應。

如果 CPU 使用率太高,建議先調整 VM 內可能造成 CPU 使用率過高的程式,或是重啟 instance,等 CPU 使用率下降之後再嘗試連線。

方法 3. 檢查 Disk 使用量是否滿載。如果滿載的話,會在 Serial port 1 出現 OSError: [Errno 28] No space left on device 這個 Log。

方法 4. 檢查無法 SSH 時是用什麼方式連入 VM 的?以及檢查客戶端使用的 key 是否正確。通常在 VM 上配置正確的 SSH key 後就會解決此問題。

方法 5. 檢查是否有啟用 OS login,限制特定使用者才能夠登入,並檢查 VM 使用的 OS 版本是否過於陳舊。

  1. 這邊需要注意的 roles 權限如下:
    1. compute.osLoginExternalUser (若當前專案有 organization 時要邀請不同 organization 的使用者)
    2. compute.osAdminLogin (OS login admin root)
    3. compute.osLogin (一般 OS login)
  2. 查看是否啟用 OS login 功能:前往 GCP console > Compute Engine > Metadata 設定為 enable-oslogin: TRUE

方法 6. 檢查 Identity-Aware Proxy (IAP) 設定是否正確。

  1. IAP-secured Tunnel User 權限
  2. Firewall rules IP range 為 35.235.240.0/20

方法 7. 檢查是否可以透過 GCP Console 登入,並啟用 Serial Console 查看錯誤訊息。

方法 8. 檢查 ssh session 是否建立成功以及 sshd 服務是否正常運行。同時檢查 TCP session 數量。

訂閱 CloudMile 電子報

所有 CloudMile 最新消息、產品動態、活動資訊和特別優惠,立即掌握。