尝试 ssh 进入 GCP 上的 Linux VM 时出错

尝试 ssh 进入 GCP 上的 Linux VM 时出错

我想知道您是否遇到过此错误以及可能的解决方法。我花了很多时间来修复此问题,但似乎没有效果。

权限被拒绝(publickey、gssapi-keyex、gssapi-with-mic)。错误:(gcloud.compute.ssh)[/usr/bin/ssh] 退出,返回代码为 [255]。

答案1

我猜你正在使用 SSH 命令或某些第三方工具进入你的Google compute实例。它只接受基于 SSH 密钥的登录。你必须通过SSH consoleGoogle Compute控制台网站打开的手动添加这些密钥。

答案2

您可以使用以下指南连接到 Linux 实例。不同的选项如下(详情见链接):

  • 使用 Compute Engine 工具进行连接
  • 使用第三方工具连接
  • 连接到没有外部 IP 地址的实例

最后一个非常重要的问题,也是导致错误的可能原因是设置防火墙规则,向其添加标签,然后将该标签添加到您的实例:

...

笔记:您的 Google Cloud Platform VPC 网络必须具有一条或多条允许在端口 22 上进行 SSH 连接的防火墙规则。防火墙规则必须允许您要从中连接的 IP 范围或特定 IP 地址进行 SSH 连接。

...

本文档关于防火墙规则,在本代码实验室的第 8 步中,您将了解如何启用规则。如果您的目标协议和端口将会是tcp:22而不会tcp:80

在设置规则之前,如果我尝试使用此命令进行连接:

perezprado@trainingperezprado:~$ gcloud compute ssh perezdesktop

我收到相同的错误信息:

ssh: connect to host 00.111.222.333 port 22: Connection timed out
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].

另一方面,这个错误:

Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

有答案这里。 显然:

.....您项目中的其他人为 sshKeys 设置了每个实例的元数据(它将覆盖项目范围的元数据)....

详情请参阅链接。

答案3

我在项目级别添加 ssh-keys 时遇到了同样的问题(控制台:Compute Engine -> 元数据 -> SSH 密钥)。我在 os-login 级别添加 ssh-keys 后问题得到解决:

gcloud compute os-login ssh-keys add \
    --key-file [KEY_FILE_PATH] \
    --ttl [EXPIRE_TIME]

参考:https://cloud.google.com/compute/docs/instances/managing-instance-access#enable_oslogin

相关内容