首页 > 解决方案 > 无法连接到 GCP VM 权限被拒绝(公钥)错误

问题描述

我正在创建一个新的 VM 实例。我已经清理了所有元数据。然后我在云外壳中运行以下命令:

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

然后我一直要求输入密码(我不知道)。我按 Enter 直到出现以下错误Permission denied (publickey) error

我已经多次删除并重新创建了我的实例,但我总是遇到同样的错误。我应该怎么办?

标签: google-cloud-platformsshvirtual-machine

解决方案


故障排除步骤:

  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 Agent 脚本是否已安装、最新且正在运行。请参阅确定 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 故障排除的更多信息。


推荐阅读