Google-Compute-Engine

無法連接到虛擬機

  • January 25, 2021

無法通過 SSH 連接到虛擬機。到 VM 的 Http 也無法使用。它工作了很長時間,但昨天(24.09.2020)它壞了,當時我什麼也沒做。在 SSH 上有錯誤

Connection via Cloud Identity-Aware Proxy Failed
Code: 4003
Reason: failed to connect to backend
You may be able to connect without using the Cloud Identity-Aware Proxy.

我試過了:

  • 重啟
  • 升級WM實例容量
  • 升級磁碟大小
  • 檢查 VPC 配置

沒有什麼是工作。

有人可以提出任何建議嗎?

首先,嘗試禁用 Cloud Identity-Aware Proxy 並通過 Web 控制台連接到 VM 實例。

然後,您應該檢查日誌:

  • 轉到Compute Engine-> VM instances-> 點擊 NAME_OF_YOUR_VM -> 在VM instance details查找部分日誌並點擊Serial port 1 (console)
  • 重新啟動您的 VM 實例。
  • 檢查完整的啟動日誌是否有任何錯誤或/和警告。

如果您的 VM 實例未啟動,請按照文件正常故障排除驗證您的磁碟是否具有有效的文件系統和有效的主引導記錄 (MBR) 。

如果您發現與磁碟空間相關的錯誤/警告,您可以嘗試根據Resizing a zonal persistent disk文件調整它的大小,也可以根據文章Recovering an inaccessible instance or a full boot disk

如果一個實例完全沒有磁碟空間,或者它沒有執行 Linux 來賓環境,那麼即使您增加了支持它的永久磁碟的大小,也無法自動調整根文件系統的大小。如果您無法連接到您的實例,或者您的啟動磁碟已滿且您無法調整其大小,則您必須創建一個新實例並從快照重新創建啟動磁碟以調整其大小。

否則嘗試通過串列控制台訪問您的 VM 實例:

 gcloud compute instances add-metadata NAME_OF_YOUR_VM_INSTANCE \
 --metadata serial-port-enable=TRUE

或轉到Compute Engine-> VM instances-> 點擊NAME_OF_YOUR_VM_INSTANCE-> 點擊EDIT-> 轉到部分**Remote access**並檢查Enable connecting to serial ports

  • 創建臨時使用者和密碼以登錄:關閉您的虛擬機並通過添加部分鍵和值來設置啟動腳本:Custom metadatastartup-script
 #!/bin/bash
 useradd --groups google_sudoers tempuser
 echo "tempuser:password" | chpasswd

然後啟動你的虛擬機。

 gcloud compute connect-to-serial-port NAME_OF_YOUR_VM_INSTANCE

或轉到Compute Engine-> VM instances-> 點擊NAME_OF_YOUR_VM_INSTANCE-> 並點擊Connect to serial console

 gcloud compute instances add-metadata NAME_OF_YOUR_VM_INSTANCE \
 --metadata serial-port-enable=FALSE

或轉到Compute Engine-> VM instances-> 點擊NAME_OF_YOUR_VM_INSTANCE-> 點擊EDIT-> 轉到部分**Remote access**並取消選中Enable connecting to serial ports. 請記住,根據文件Interacting with the serial console

注意:互動式串列控制台不支持基於 IP 的訪問限制,例如 IP 白名單。如果您在實例上啟用互動式串列控制台,客戶端可以嘗試從任何 IP 地址連接到該實例。如果知道正確的 SSH 密鑰、使用者名、項目 ID、區域和實例名稱,任何人都可以連接到該實例。使用防火牆規則來控制對您的網路和特定埠的訪問。

如果您無法通過串列控制台進行連接,請嘗試按照文件故障排除 SSH部分檢查 VM 實例而不將其關閉並檢查另一個 VM 上的 VM 磁碟。同樣的方式,您可以將數據傳輸到另一個工作的 VM 實例。

引用自:https://serverfault.com/questions/1035275