权限被拒绝(公钥)。(gcloud.compute.ssh)[/usr/bin/ssh] 退出,返回代码 [255]。退出,返回代码

权限被拒绝(公钥)。(gcloud.compute.ssh)[/usr/bin/ssh] 退出,返回代码 [255]。退出,返回代码

尝试将虚拟机连接到 gcloud 但失败了。请指教

[email protected]: Permission denied (publickey).
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255]

答案1

权限被拒绝(公钥)表示您的身份验证不正确。请确保您使用的是正确的公钥/私钥对。

也可以看看:

https://cloud.google.com/sdk/gcloud/reference/compute/ssh#--ssh-key-file

答案2

ssh 无法连接的原因可能有多种:

  1. 防火墙未在实例上为 ssh 添加允许规则。
  2. 系统重启后,ssh 服务器关闭或者出现故障。
  3. 密钥未添加到用户目录中的 .ssh 文件夹中。
  4. 如果启用了OS登录可能会导致ssh出现故障。

gcloud尝试使用该工具以其他用户身份登录,方法是指定another-usernameSSH 请求。该gcloud工具会更新项目的元数据以添加新用户并允许 SSH 访问。

gcloud compute ssh another-username@$PROB_INSTANCE

我建议您查看 SSH 故障排除步骤,如文档

此外,您还可以查看以下内容指导它解释了如何通过手动创建 SSH 密钥和编辑公共 SSH 密钥元数据来控制对 Linux 实例的访问。

我希望这些信息对你有用

答案3

有多种原因可能导致您无法连接。防火墙不应该是其中之一,因为您已连接但身份验证失败。

如果你有已启用操作系统登录你可以通过以下方式控制对虚拟机的访问在 IAM 中授予适当的角色. 授予启用操作系统的虚拟机 SSH 访问权限的最方便和集中的方法是创建一个专用的服务帐户并授予其 SSH 访问权限

尝试一下是好的更新你的 SSH 密钥gcloud compute os-login ssh-keys update

如果你已禁用 OS 登录(默认设置,除非你的组织强制启用它),那么你可以尝试更新你的 SSH 密钥gcloud compute config-ssh

如果仍然无法连接,你可以看看常规SSH 故障排除文档

仍然无法登录?

找出虚拟机发生了什么,检查串行控制台输出 - 这可能会给你一个提示。你的操作系统可能无法正常启动(磁盘已满、文件损坏、许多其他原因)。看看我的一个答案在这里如何解决这个问题

如果你发现系统磁盘空间不足,你可以让它变大gcloud compute disks resize example-disk-1 --size=11GB

进入虚拟机的另一种方法是手动添加用户/密码(没有 ssk 密钥)并以“老方法”登录 -请参阅我的其他答案如何使用启动脚本添加用户

可能还有其他原因,例如虚拟机上的路由(这可能听起来不是很明显)——我发现这里就有这样的例子

相关内容