簡體   English   中英

無法連接到 GCP VM 權限被拒絕(公鑰)錯誤

[英]Can't connect to GCP VM Permission denied (publickey) error

我正在創建一個新的 VM 實例。 我已經清理了所有元數據。 然后我在雲 shell 中運行以下命令:

gcloud beta compute ssh --zone "europe-west2-c" "vmname"  --project "myprojectname"

然后我一直要求輸入密碼(我不知道)。 我按 Enter 直到出現以下錯誤Permission denied (publickey) error

我已經多次刪除並重新創建了我的實例,但我總是遇到同樣的錯誤。 我應該怎么辦?

Permission denied (publickey) 錯誤的可能原因是:

  • 您的密鑰已過期,Compute Engine 刪除了您的~/.ssh/authorized_keys文件。
  • 您使用存儲在元數據中的 SSH 密鑰連接到啟用了 OS Login 的 VM。
  • 您使用存儲在 OS Login 配置文件中的 SSH 密鑰連接到未啟用 OS Login 的 VM。
  • 您使用第三方工具連接,並且您的 SSH 命令配置錯誤。
  • sshd 守護程序未運行或未正確配置。

您可以在此鏈接中找到有關如何解決 SSH 密鑰錯誤的更多信息

我有時也有同樣的問題。 根據GCP故障排除鏈接的原因和解決方案是:

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

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

使用 Google Cloud Console 或 gcloud 命令行工具連接到您的虛擬機。 將您的 SSH 密鑰重新添加到元數據。 有關詳細信息,請參閱將 SSH 密鑰添加到使用基於元數據的 SSH 密鑰的 VM。

我使用 terraform,所以在這種情況下,我指示工作流銷毀 VM 並重建它。

故障排除步驟:

  1. 使用 UI ssh 登錄。 這將創建一個臨時的 ssh 密鑰,Google 代理還執行代碼路徑以刷新.ssh/authorized_keys 並解決 .ssh/ 和 .ssh/authorized_keys 的任何無效目錄/文件權限。 此方法將解決與損壞的密鑰、缺少目錄/文件或無效的目錄/文件權限相關的常見 gcloud 計算 ssh 問題。 執行 UI ssh 后再次嘗試 gcloud。
  2. 確保該帳戶已作為具有計算實例管理員角色的 IAM 用戶向 gcloud 進行身份驗證; 例如,運行 gcloud auth revoke --all, gcloud auth login [IAM-USER] 然后再次嘗試 gcloud compute ssh。
  3. 驗證是否為項目或實例設置了 gcloud 的持久 SSH 密鑰元數據。 查看Compute Engine > Metadata ,然后單擊SSH Keys 持久鍵沒有expireOn 屬性
  4. 帳戶可能丟失了私鑰、密鑰對不匹配等。您可以通過執行以下操作強制 gcloud 生成新的 SSH 密鑰對:
    移動 ~/.ssh/google_compute_engine 和 ~/.ssh/google_compute_engine.pub(如果存在)。
    例如:
    mv ~/.ssh/google_compute_engine.pub ~/.ssh/google_compute_engine.pub.old
    mv ~/.ssh/google_compute_engine ~/.ssh/google_compute_engine.old
    再次嘗試 gcloud compute ssh [INSTANCE-NAME]。 將創建一個新的密鑰對,並將公鑰添加到 SSH 密鑰元數據中。
  5. 驗證 Linux Google 代理腳本是否已安裝、最新且正在運行。 請參閱確定 Google 代理狀態 如果未安裝 Linux Google Agent,請重新安裝。 請參閱guest-environment
  6. 驗證帳戶所有者/權限是否正確。 確保帳戶主目錄具有正確的所有權並且不可全局寫入。 如果不使用 os-login(默認),您的 .ssh 文件夾必須具有模式 0700,.ssh/authorized_keys 文件必須具有模式 0600。查看 /var/log/auth.log 是否有任何錯誤。
    命令:
    sudo chmod 700 /home/[user-id]/.ssh
    sudo chmod 600 /home/[user-id]/.ssh/authorized_keys
  7. 如果啟用了 os-login 並且虛擬機實例正在使用服務帳戶(默認)。 將以下角色添加到帳戶。
    角色/compute.osLogin
    角色/iam.serviceAccountUser

有關故障排除 SSH的更多信息。

要在無法啟動 ssh 時解決此問題:

  1. 編輯虛擬機並啟用串口
  2. 啟動串行控制台
  3. 編輯 ~/.ssh/authorized_keys
  4. 在您的桌面/客戶端上,
    • 編輯 /Users/[yourdesktopuser]/.ssh/id_rsa.pub
    • 將內容復制到剪貼板
    • 將此內容粘貼到 VM 串行控制台中的 authorized_keys 文件末尾
    • 保存並關閉

然后這將從您的桌面識別公鑰

暫無
暫無

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

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