無法 SSH 有多種可能性,可以從最容易排查的開始進行
-
使用者權限 - IAM 權限
-
網路相關 - 確認 VM 可以連線至網路和 Port 22 是否有打開
-
VM 的狀態 - 是否為 Running 狀態
除錯步驟
確認以下設定以及狀態是否正常:
- 檢查防火牆規則有沒有開放 22 port 和 network tag 是否正確
- 檢查 VM CPU/RAM 使用率,CPU 使用率 80-90% 時也會造成 VM 太忙無法回應。 如果 CPU 使用率太高,請客戶先調整 VM 內可能造成 CPU 使用率過高的程式或是重啟實例,等 CPU 使用率下降之後再嘗試連線。
- 檢查 Guest environment 是否有正常啟動 [2]
確認您使用連線的方式:
1. 透過 GCP console 連線
- 因 GCP console 是使用 web socket 連線至 IAP 再連線 VM,因此需要先檢查 Identity-AwareProxy (IAP) 設定是否正確。
- IAP-secured Tunnel User 權限
- Firewall rules IP range 為 35.235.240.0/20
2. 透過第三方工具連線 SSH。
- 檢查 SSH key 是否匹配。
3. 使用 OS Login
- 檢查是否啟用 OS login,限制特定使用者才能夠登入。檢查客戶 VM 使用的 OS ,是否過於陳舊
- 需注意的角色 (roles) 權限:
- compute.osLoginExternalUser // 若當前專案屬機構下而需要邀請機構以外的使用者
- compute.osAdminLogin // OS login admin root
- compute.osLogin // 一般 OS login
- 是否啟用 OS login 功能:前往 GCP console -> Compute Engine -> Metadata 設定為 enable-oslogin: TRUE
- 是否啟用 OS login 功能:前往 GCP console -> Compute Engine -> Metadata 設定為 enable-oslogin: TRUE
如上述都無法成功連線,請啟用 Serial Console 查看錯誤訊息。