53

在空闲几秒钟后,我一直被踢出我的计算引擎实例,并出现指示的错误 (255)。我使用“gcloud compute ssh”登录。我使用的是默认防火墙设置,我相信这对于 ssh 来说已经足够了。但如果我遗漏了什么,请指出并建议修复此错误。基本上我现在无法完成任何有效的工作,不得不多次使用 ssh。

4

23 回答 23

61

如果设置发生更改,gcloud 将拒绝 ssh 连接,例如在您更改默认区域或区域之后,或者您创建了另一个实例之后。然后,您必须通过以下方式更新元数据中的 ssh 密钥

sudo gcloud compute config-ssh

如果这抱怨存储 ssh 密钥条目的配置文件中有不同的条目,~/.ssh/config,删除此文件并再次执行上述命令。

如果你安装了没有 sudo 的 gcloud,你可以省略sudo.

于 2018-04-04T09:48:38.543 回答
22

255 是 ssh 失败的交互式 ssh 退出代码 - 否则交互式 ssh 将使用 ssh 会话中执行的最后一个命令的退出代码退出。

下次您从 ssh 获得退出代码 255 时,请尝试使用 --ssh-flag="-vvv" 运行(更多 v => 更多调试输出),看看它是否有助于跟踪连接问题。

于 2014-10-06T14:38:29.577 回答
15

对于那些在此页面停留的人。这帮助我解决了问题。尝试以下操作:

  1. 转到您的 Google 并删除服务器的 SSH 密钥
    • 转到您的谷歌云控制台->计算引擎->元数据->“SSH密钥”选项卡,然后单击编辑。在这里您可以删除 ssh 密钥。
  2. 再次运行 gcloud 命令

    • 单击您的谷歌云帐户左侧的“实例”链接,该链接将列出右侧的所有实例。在连接栏下,您将看到“SSH”下拉菜单,单击“查看云命令”,这将带来一个新对话框。复制该命令并在您的 PC 终端上运行。这将让您通过 SSH 连接到谷歌计算引擎。

这似乎是谷歌云平台本身的一个功能/问题,我们将继续检查它。

于 2017-12-11T02:47:53.463 回答
5

如果编辑了默认网络,或者不使用默认网络,您可能需要通过添加防火墙规则来显式启用 ssh 访问

$ gcloud compute firewall-rules create --network=YOUR_NETWORK \
default-allow-ssh --allow tcp:22

之后,重试“gcloud compute ssh”命令。

于 2019-03-05T19:44:05.050 回答
5

这是一个真正的问题,处理它的文档很少。

在使用通过 GCP 控制台提供的 gcloud sdk ssh 片段创建实例后的某个时间停止工作并不断出现 255 错误,使得实例上的 ssh 连接只能通过浏览器通过 GCP 控制台访问相关计算实例。更不用说我在许多不同的情况下都发生了这种情况,其中一些在初始设置和部署后没有触及默认帐户权限,这太令人沮丧了。因为它无缘无故地停止工作......工作,然后不......

唯一对我有用的是创建一个新用户以通过 gcloud sdk 进行连接!无论是本地的 Windows/PowerShell 还是 Linux,使用以下代码段:

gcloud compute ssh newuser-name@instance-name

这里的所有 GCP 文档:https ://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh

根据文档中的建议传递的所有其他内容 - 端口 22 打开并具有访问权限意味着它必须是默认用户授权密钥的问题,他们绝对没有提供有关如何解决该问题的文档 - 至少我在修复时找不到任何东西(不是创建或删除)

我尝试更新帐户,尝试从实例中删除用户和凭据,但似乎没有任何效果。使用:

gcloud 计算 --project "project-name" ssh --zone "us-east4-a" "instance-name"

只是不起作用... - 甚至尝试过'gcloud compute config-ssh --force-key-file-overwrite' 没有任何效果...

但是每次都可以创建一个新用户,一旦创建了用户,您就可以通过 gcloud sdk 继续使用该用户

这是一种变通方法,我讨厌为这样的事情变通,但为了我的理智,这至少在我弄清楚如何重置默认帐户权限之前有效,所以如果有人有任何想法或可以指出我的方向我非常感激!

于 2019-03-20T16:11:12.377 回答
3

我的错误是默认防火墙将允许所有连接到一个实例。事实证明恰恰相反。请参阅必须设置适当的防火墙规则以允许连接到实例

安-

于 2014-10-05T16:54:25.287 回答
2

如果您为您的设置启用了身份识别代理 (IAP),请尝试将--tunnel-through-iap选项添加到gcloud compute ssh命令中。

$ gcloud compute ssh --zone <zone> --project <project> --tunnel-through-iap <instance-name>
于 2020-06-22T07:36:59.590 回答
1

我知道这是很久以前打开的,但是关于这个主题的最新更新。我在通过 ssh 连接时遇到了同样的问题。它给出了错误代码 225。显然存在连接问题。在VPC network-> Firewallto下已经设置了防火墙规则allow ssh。然而,为了解决这个问题,我必须去特定的网络并在网络防火墙规则下创建一个规则。 VPC network details->FIREWALL RULES并为 port 创建一个入站TCP规则22

于 2021-04-17T20:20:51.953 回答
1

我有同样的错误。我重新启动了 VM 实例并且 ssh 工作正常

于 2020-12-31T06:37:22.363 回答
1

我遇到的问题是,单击 SSH 按钮后,它会继续尝试建立连接并失败。经过长时间的努力,我通过为自己添加服务帐户用户角色来解决它。如果您的帐户是在创建 VM 实例之后创建的,则可能会导致这种情况。

于 2021-04-13T21:53:57.393 回答
1

就我而言,我为 VM 创建了一个可引导磁盘,但没有添加它需要拥有的源映像的信息。因此,即使实例运行正常并且存在 ssh-allow 规则,VM 也没有启动。

最后将源映像添加到磁盘,我能够通过 ssh 进入虚拟机。

希望这对某人有所帮助。

于 2020-09-16T21:42:00.413 回答
1

登陆此页面的人的更多信息,如果您使用抢占式实例来节省一些计算成本,这也可能是被踢出这样的原因。您的实例可能刚刚随机停止。

于 2019-11-14T06:39:01.143 回答
0

如果您在尝试从计算机终端远程访问 g-cloud 虚拟机实例时遇到问题,并且收到错误代码 255,则问题是您计算机中的 ssh 协议错误或未更新。

在这种情况下,修复它的最佳方法是转到您的主目录(在您的计算机中)检查隐藏文件并找到文件夹“ .ssh ”。只需删除此文件夹并重新打开您的 bash 终端。然后再次运行 gcloud vm 命令。

示例: you@your_computer :~$ gcloud beta compute ssh --zone "us-central1-a" " your_VM_name " --project " your_project_name "

这次您不应收到错误 255 代码,而是显示以下消息:警告:gcloud 的私有 SSH 密钥文件不存在。警告:gcloud 的公共 SSH 密钥文件不存在。警告:您没有 gcloud 的 SSH 密钥。警告:将执行 SSH keygen 以生成密钥。此工具需要创建目录 [/home/ your_name /.ssh] 才能生成 SSH 密钥。

您要继续(是/否)吗?

键入“Y”,gcloud 将通过创建一个全新的更新.ssh文件来设置新协议。之后,您应该可以毫无问题地使用 gcloud 命令访问您的虚拟机。

那应该可以解决问题干杯 https://blackpearlmatrix.com

于 2021-12-30T10:32:57.100 回答
0

使用 IAP 时,GCP 将密钥存储在实例元数据中,然后将其传播到~/.ssh/authorized_keys文件中。当您从文件中删除密钥并且它仍然在实例元数据中
时,您可能会收到 OP 所说的错误。~/.ssh/authorized_keys原因是:

  1. GCP 检查您用于 ssh 的用户键组合是否已在实例元数据中。
  2. 它假定该~/.ssh/authorized_keys用户的文件中存在 并且不传播密钥。
  3. ~/.ssh/authorized_keys由于无论出于何种原因(您删除了它,其他人删除了它等等),文件中都不存在密钥- 您会被拒绝访问。

如果您遇到这种情况,那么修复很简单:删除该用户的实例元数据条目,键组合(已附加图像作为参考,只需单击X并删除您的错误键)并再次尝试 ssh 在此处输入图像描述

于 2021-08-19T03:55:31.220 回答
0

尝试切换到不同的 Internet 连接


所以,我遇到了同样的错误,但在我的情况下,我根本无法登录到实例。

(base) girish@girish:~$ gcloud beta compute ssh --zone "asia-east1-b" "fp-1" --project "fp-public"
ssh: connect to host 12.345.678.90 port 22: Resource temporarily unavailable
ERROR: (gcloud.beta.compute.ssh) [/usr/bin/ssh] exited with return code [255].

(base) girish@girish:~$ gcloud beta compute ssh  --ssh-flag='-vvv' --zone "asia-east1-b" "fp-1" --project "fp-public"
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "12.345.678.90" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 12.345.678.90 [12.345.678.90] port 22.
[debug1: connect to address 12.345.678.90 port 22: Resource temporarily unavailable
ssh: connect to host 12.345.678.903 port 22: Resource temporarily unavailable
ERROR: (gcloud.beta.compute.ssh) [/usr/bin/ssh] exited with return code [255].

什么对我有用: 我尝试重新安装很多东西并重新初始化各种配置,然后登陆一个建议更改您正在使用的 Internet 网络的线程并且它有效!

于 2020-03-26T15:48:45.210 回答
0

Try restarting your computer.

I got the same error and tried gcloud config ssh as mentioned previously to no avail. I then checked that the IDs and roles of serviceaccount and developer had 'editor' permissions, and that was fine. I started a new instance and logged out of all of my other google accounts and it still threw the error. Then, I restarted my computer and did not log back into my other google accounts. That fixed it.

于 2021-07-13T23:33:51.560 回答
0

使用“gcloud init”重新初始化 gcloud 并生成新的 ssh 密钥为我解决了这个问题。

于 2020-05-17T12:26:15.840 回答
0

您可能有一条规则,只允许列入白名单的 IP ssh 进入 gcloud 虚拟机。因此,您可能忘记启用您的工作 VPN 或离开您工作的办公室 IP。

于 2021-04-01T01:11:39.167 回答
0

有完全相同的症状 - 在我的情况下,原因似乎如下。我使用的是 root 用户 + ssh 密钥,而默认情况下,在 /etc/ssh/sshd_config (PermitRootLogin 属性)中禁用了 root 登录。

于 2019-06-20T14:54:43.843 回答
0

我最终不得不删除我的实例并使用相同的磁盘创建一个新实例。有关详细信息,请参阅https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh#use_your_disk_on_a_new_instance

于 2019-08-24T23:18:37.887 回答
0

我有同样的问题。

我已经连接了串行控制并检查了日志。并且有一些错误日志,例如“没有磁盘空间”。然后我按照本文档中的说明调整了磁盘大小。

现在我可以使用 ssh 连接到实例。

在此处输入图像描述

于 2020-07-01T06:17:05.417 回答
0

对我有用的是打开我的防火墙。(在 Mac 上,通过 ssh 连接到 gcp 实例)。

在另一个错误实例中,当我在以太网上时,我的连接工作正常,但在我使用 wifi 时却不行。切换回以太网允许我再次连接。

于 2022-01-18T20:48:09.217 回答
0

对我来说,我的其他队友能够登录机器,但我不能。所以我要求他们用我的名字创建一个具有 sudo 权限的用户,登录到串行控制台并更改passwordAuthenticationyes后跟sudo service ssh restart(很少这可能是sudo service sshd restart。)

发布这个我可以登录 ssh -o PreferredAuthentications=password username@publicIP -p 22

这个技巧对我来说很好。

于 2020-02-12T07:01:45.963 回答