【GCP常見問答】無法使用 SSH 連線至主機,該如何除錯?

無法 SSH 有多種可能性,可以從最容易排查的開始進行

  • 使用者權限 - IAM 權限

  • 網路相關 - 確認 VM 可以連線至網路和 Port 22 是否有打開

  • VM 的狀態 - 是否為 Running 狀態

除錯步驟

確認以下設定以及狀態是否正常:

  1. 檢查防火牆規則有沒有開放 22 port 和 network tag 是否正確
  2. 檢查 VM CPU/RAM 使用率,CPU 使用率 80-90% 時也會造成 VM 太忙無法回應。 如果 CPU 使用率太高,請客戶先調整 VM 內可能造成 CPU 使用率過高的程式或是重啟實例,等 CPU 使用率下降之後再嘗試連線。
  3. 檢查 Guest environment 是否有正常啟動 [2]

確認您使用連線的方式:

1. 透過 GCP console 連線

  1. 因 GCP console 是使用 web socket 連線至 IAP 再連線 VM,因此需要先檢查 Identity-AwareProxy (IAP) 設定是否正確。
  • IAP-secured Tunnel User 權限
  • Firewall rules IP range 為 35.235.240.0/20

2. 透過第三方工具連線 SSH。

  1. 檢查 SSH key 是否匹配。

3. 使用 OS Login

  1. 檢查是否啟用 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
  2. 是否啟用 OS login 功能:前往 GCP console -> Compute Engine -> Metadata 設定為 enable-oslogin: TRUE

如上述都無法成功連線,請啟用 Serial Console 查看錯誤訊息。

常見的錯誤 Log:

Q: GCEGuestAgent Error non_windows_accounts.go:158: Error updating SSH keys for {USER}: mkdir /home/{USER}/.ssh: no such file or directory.

A: 需手動從 serial console 進去新增此路徑

-----

Q: Connection Failed

系統錯誤訊息:You cannot connect to the VM instance because of an unexpected error. 並且在關機重開該機器、調整機器內設定時遇到以下 error:

Operation type [start] failed with message "The resource '*@*.com' of type 'serviceAccount' was not found."

A: Service account 遭到刪除、無法找到時會跳該 Error,將機器關機調整 service account 即可解決。

-----

Q: 在檢查 VM log 時,並未發現此 log ```GCEGuestAgent Info: GCE Agent Started (version YYYYMMDD.NN) ```

此問題是 Google guest environment [1] 並未自動啟動,因此需可以嘗試以下方式:

  1. 重新開機
  2. 從 Serial console 進去手動啟用服務 [2]

sudo systemctl enable google-guest-agent

sudo systemctl start google-guest-agent 

  1. 更新至最新版本 

sudo apt update

sudo apt install google-compute-engine google-compute-engine-oslogin \

google-guest-agent google-osconfig-agent

參考文件

[1] https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh-errors

[2] https://cloud.google.com/compute/docs/images/install-guest-environment#wgei

訂閱 CloudMile 電子報

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