我正在创建一个新的虚拟机实例。我已经清理了所有元数据。然后我在云 shell 中运行以下命令:
gcloud beta compute ssh --zone "europe-west2-c" "vmname" --project "myprojectname"
然后我一直要求输入密码(我不知道)。我按 Enter 键,直到出现以下错误 Permission returned (publickey) error
我已多次删除并重新创建实例,但总是遇到相同的错误。我该怎么办?
最佳答案
故障排除步骤:
- 使用 UI ssh 登录。这会创建一个临时 ssh key ,Google Agent 还会执行代码路径来刷新 .ssh/authorized_keys 并解决 .ssh/和 .ssh/authorized_keys 的任何无效目录/文件权限问题。此方法将解决与 key 损坏、丢失目录/文件或无效目录/文件权限相关的常见 gcloud 计算 ssh 问题。执行 UI ssh 后再次尝试 gcloud。
- 确保该帐户已通过 compute instance admin role 作为 IAM 用户身份通过 gcloud 身份验证;例如,运行 gcloud auth revoke --all, gcloud auth login [IAM-USER],然后再次尝试 gcloudcompute ssh。
- 验证是否为项目或实例设置了 gcloud 的持久 SSH key 元数据。查看计算引擎 > 元数据,然后单击SSH key 。持久 key 没有expireOn 属性。
- 帐户可能丢失了私钥、 key 对不匹配等。您可以通过执行以下操作强制 gcloud 生成新的 SSH key 对:
移动 ~/.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
再次尝试 gcloudcompute ssh [实例名称]。将创建一个新的 key 对,并将公钥添加到 SSH key 元数据中。 - 验证 Linux Google Agent 脚本是否已安装、最新且正在运行。请参阅Determining Google Agent Status 。如果未安装Linux Google Agent,请重新安装。请参阅guest-environment .
- 验证帐户所有者/权限是否正确。确保帐户主目录具有正确的所有权并且不可全局写入。如果不使用 os-login(默认),您的 .ssh 文件夹必须具有模式 0700,.ssh/authorized_keys 文件必须具有模式 0600。查看/var/log/auth.log 是否有任何错误。
命令:
sudo chmod 700/home/[用户 ID]/.ssh
sudo chmod 600/home/[用户 ID]/.ssh/authorized_keys - 如果启用了 os-login 并且虚拟机实例正在使用服务帐户(默认)。将以下角色添加到帐户。
角色/compute.osLogin
角色/iam.serviceAccountUser
了解更多信息troubleshooting SSH .
关于google-cloud-platform - 无法连接到 GCP VM 权限被拒绝(公钥)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67222645/