簡體   English   中英

谷歌計算引擎無法訪問虛擬機

[英]Google Compute Engine Unable to Access VM

我無法 ssh 進入 GCP Compute Engine 上的虛擬機

在此處輸入圖像描述

但是,當我使用 --troubleshoot 標志運行命令時,似乎一切正常。

在此處輸入圖像描述

當我通過控制台連接時,我收到一條錯誤消息,提示“由於意外錯誤,您無法連接到 VM 實例”。

此外,我組織中的其他人也可以連接。

我無法弄清楚錯誤是什么。 任何幫助,將不勝感激。

從您收到“權限被拒絕(公鑰)”的錯誤消息來看,這可能有幾個原因。

此錯誤的一些最常見原因:

  • 您使用存儲在元數據中的 SSH 密鑰連接到啟用了 OS Login 的 VM。 如果您的項目啟用了 OS Login,則您的 VM 不接受存儲在元數據中的 SSH 密鑰。 如果您不確定是否啟用了操作系統登錄,請參閱檢查是否配置了操作系統登錄。

要解決此問題,請嘗試以下方法之一:

  • 使用 Google Cloud 控制台或 Google Cloud CLI 連接到您的 VM。 有關詳細信息,請參閱連接到 VM。

  • 將您的 SSH 密鑰添加到 OS Login。 有關詳細信息,請參閱向使用 OS Login 的 VM 添加密鑰。

  • 禁用操作系統登錄。 有關詳細信息,請參閱禁用操作系統登錄。

  • 您使用存儲在 OS Login 配置文件中的 SSH 密鑰連接到未啟用 OS Login 的 VM。 如果您禁用 OS Login,您的 VM 將不接受存儲在您的 OS Login 配置文件中的 SSH 密鑰。 如果您不確定是否啟用了操作系統登錄,請參閱檢查是否配置了操作系統登錄。

要解決此問題,請嘗試以下方法之一:

  • 使用 Google Cloud 控制台或 Google Cloud CLI 連接到您的 VM。 有關詳細信息,請參閱連接到 VM。

  • 啟用操作系統登錄。 有關更多信息,請參閱啟用操作系統登錄。

  • 將您的 SSH 密鑰添加到元數據。 有關詳細信息,請參閱將 SSH 密鑰添加到使用基於元數據的 SSH 密鑰的 VM。

  • VM 啟用了 OS Login,但您沒有足夠的 IAM 權限來使用 OS Login。 要連接到啟用了 OS Login 的 VM,您必須具有 OS Login 所需的權限。 如果您不確定是否啟用了操作系統登錄,請參閱檢查是否配置了操作系統登錄。

要解決此問題,請授予所需的 OS Login IAM 角色。

  • 您的密鑰已過期,Compute Engine 刪除了您的~/.ssh/authorized_keys 文件。 如果您手動將 SSH 密鑰添加到您的 VM,然后使用 Google Cloud 控制台連接到您的 VM,則 Compute Engine 會為您的連接創建一個新的密鑰對。 新密鑰對過期后,Compute Engine 刪除了您在 VM 中的 ~/.ssh/authorized_keys 文件,其中包含您手動添加的 SSH 密鑰。

要解決此問題,請嘗試以下方法之一:

  • 使用 Google Cloud 控制台或 Google Cloud CLI 連接到您的 VM。 有關詳細信息,請參閱連接到 VM。

  • 將您的 SSH 密鑰重新添加到元數據。 有關詳細信息,請參閱將 SSH 密鑰添加到使用基於元數據的 SSH 密鑰的 VM。

  • 您使用第三方工具連接,並且您的 SSH 命令配置錯誤。 如果您使用 ssh 命令進行連接,但未指定私鑰的路徑,或者您指定的私鑰路徑不正確,則您的 VM 會拒絕您的連接。

要解決此問題,請嘗試以下方法之一:

  • 運行以下命令: ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP

替換以下內容:

  • PATH_TO_PRIVATE_KEY:您的私有 SSH 密鑰文件的路徑。

  • USERNAME:連接到實例的用戶的用戶名。 如果您在元數據中管理 SSH 密鑰,則用戶名是您在創建 SSH 密鑰時指定的用戶名。 對於操作系統登錄帳戶,用戶名在您的 Google 個人資料中定義。

  • EXTERNAL_IP:VM 的外部 IP 地址。

  • 使用 Google Cloud 控制台或 Google Cloud CLI 連接到您的 VM。 當您使用這些工具進行連接時,Compute Engine 會為您管理密鑰創建。 有關詳細信息,請參閱連接到 VM。

  • 您的 VM 的來賓環境未運行。 如果這是您第一次連接到 VM 並且來賓環境未運行,則 VM 可能會拒絕您的 SSH 連接請求。

要解決此問題,請執行以下操作:

  • 重新啟動虛擬機。

  • 在 Google Cloud 控制台中,查看串口 output 中的系統啟動日志,以確定來賓環境是否正在運行。 有關更多信息,請參閱驗證來賓環境。

  • 如果來賓環境未運行,請通過克隆 VM 的引導磁盤並使用啟動腳本手動安裝來賓環境。

  • sshd 守護程序未運行或未正確配置。 sshd 守護進程啟用 SSH 連接。 如果配置錯誤或未運行,則無法連接到 VM。

要解決此問題,請嘗試以下操作:

  • 查看您的操作系統的用戶指南以確保您的 sshd_config 設置正確。

  • 如果您之前修改了 VM 上的文件夾權限,請將其更改回默認值:

  • 700.ssh目錄

  • 644 的公鑰,存儲在 ~/.ssh/authorized_keys 文件夾中

以 root 用戶身份連接到 VM 的串行控制台,並修改文件夾權限:

chmod 700 /home/USERNAME/.ssh; chmod 644 /home/USERNAME/.ssh/authorized_keys

USERNAME替換為您要修改文件夾權限的用戶名。

  • VM 的啟動磁盤已滿。 建立 SSH 連接后,來賓環境將會話的公共 SSH 密鑰添加到 ~/.ssh/authorized_keys 文件。 如果磁盤已滿,則連接失敗。 要解決此問題,請執行以下一項或多項操作:

  • 通過使用串行控制台進行調試以識別沒有剩余空間錯誤,確認引導磁盤已滿。

  • 調整磁盤大小。

  • 如果您知道哪些文件正在使用磁盤空間,請創建一個啟動腳本來刪除不必要的文件並釋放空間。 在 VM 啟動並連接到它后,刪除啟動腳本元數據。

  • $HOME、$HOME/.ssh 或 $HOME/.ssh/authorized_keys 的權限或所有權錯誤。

  • 所有權:來賓環境將用戶的公共 SSH 密鑰存儲在 $HOME/.ssh/authorized_keys 文件中。 $HOME目錄、$HOME/.ssh目錄、authorized_keys文件的屬主必須與連接VM的用戶相同。

  • Unix 權限:來賓環境需要以下 Unix 權限:

從 Google Cloud 控制台或gcloud CLI 連接到 VM 時,可能會出現以下錯誤:

  • 谷歌雲控制台:
Connection Failed

We are unable to connect to the VM on port 22.
  • gcloud CLI:
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].

出現這些錯誤的原因有多種。 以下是一些最常見的錯誤原因:

  • VM 正在啟動,但 sshd 尚未運行。 您無法在 VM 運行之前連接到它。

要解決此問題,請等到 VM 完成啟動並再次嘗試連接。

  • 允許 SSH 的防火牆規則丟失或配置錯誤。 默認情況下,Compute Engine 虛擬機允許 SSH 訪問端口 22。如果 default-allow-ssh 規則缺失或配置錯誤,您將無法連接到虛擬機。

要解決此問題,請檢查您的防火牆規則並重新添加或重新配置 default-allow-ssh。

  • sshd 在自定義端口上運行。 如果您將 sshd 配置為在端口 22 以外的端口上運行,您將無法連接到您的 VM。

要解決此問題,請使用以下命令創建自定義防火牆規則,以允許 sshd 運行的端口上的 tcp 流量:

gcloud compute firewall-rules create FIREWALL_NAME \
  --allow tcp:PORT_NUMBER

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM