错误:(gcloud.compute.ssh)[/usr/bin/ssh] 退出并返回代码 [255]

Posted

技术标签:

【中文标题】错误:(gcloud.compute.ssh)[/usr/bin/ssh] 退出并返回代码 [255]【英文标题】:ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255] 【发布时间】:2014-11-29 08:57:16 【问题描述】:

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

提前致谢。

安-

【问题讨论】:

【参考方案1】:

如果设置发生变化,gcloud 会拒绝 ssh 连接,例如 在您更改了默认地区或区域,或者您创建了另一个实例之后。 然后,您必须通过

更新元数据中的 ssh 密钥
sudo gcloud compute config-ssh

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

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

【讨论】:

这个没有sudo至少为我解决了上述问题。 救了我的命,工作了 7 个小时没有解决方案,只需一个命令就可以了。 这给了我您现在应该能够在您的实例中使用 ssh/scp。例如,尝试运行:ssh projectid.europe-west4-a.projectname - 结果是“nodename nor servname provided, or not known” 您是在本地运行还是在远程 VM 实例中运行? @ComputerScientist 在 VM 实例上运行以更新公共和私有 SSH 密钥。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

    再次运行 gcloud 命令

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

这似乎是 Google Cloud Platform 本身的功能/问题,我们将继续检查它。

【讨论】:

这两个步骤你能说得更准确些吗?你运行了什么命令? @ComputerScientist:更新了答案。谢谢!【参考方案4】:

如果修改了默认网络,或者不使用默认网络,可能需要explicitly enable ssh access by adding a firewall-rule:

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

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

【讨论】:

这对我有用!我什至不需要 --network 部分。 2021 年 11 月 - 仍然有效。【参考方案5】:

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

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

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

gcloud compute ssh newuser-name@instance-name

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

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

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

gcloud compute --project "project-name" ssh --zone "us-east4-a" "instance-name"

只是没有用... - 甚至尝试过 'gcloud compute config-ssh --force-key-file-overwrite' NOTHING WORKS...

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

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

【讨论】:

使用nmap IPaddress后,输出为:Nmap scan report for IPaddress.bc.googleusercontent.com (IPaddress) Host is up (0.074s latency). Not shown: 994 filtered ports PORT STATE SERVICE 22/tcp closed ssh 80/tcp closed http 443/tcp closed https 3389/tcp closed ms-wbt-server 6000/tcp closed X11 7000/tcp closed afs3-fileserver Nmap done: 1 IP address (1 host up) scanned in 7.32 seconds STATE for PORT:22/tcp被关闭,这件事情怎么办,有什么建议吗?【参考方案6】:

我的错误是默认防火墙将允许所有连接到一个实例。事实证明恰恰相反。请参考an appropriate firewall rule must be set up to allow connection into an instance

安-

【讨论】:

【参考方案7】:

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

$ gcloud compute ssh --zone <zone> --project <project> --tunnel-through-iap <instance-name>

【讨论】:

我尝试了其他方法,但这是最终奏效的方法:gcloud compute ssh --tunnel-through-iap &lt;instance-name&gt;【参考方案8】:

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

【讨论】:

【参考方案9】:

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

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

希望这对某人有所帮助。

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

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

【讨论】:

这正是我所缺少的部分。我有一个从roles/compute.osLoginroles/iam.serviceAccountUser 角色构建的非常简单的自定义角色。我已经拥有roles/iam.serviceAccountAdmin 角色,虽然可以这样做,但事实证明it's not a superset 的roles/iam.serviceAccountUser 角色,它没有授予iam.serviceAccounts.actAs 权限。谢谢!【参考方案12】:

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

【讨论】:

【参考方案13】:

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

【讨论】:

请将信息发布为评论而不是答案。 嗨,Jacob - 我实际上尝试过,遗憾的是我的个人资料(初学者)不允许我对上面发布的答案添加评论(以最优惠的价格):/ ...“一旦你有足够的声誉您将能够对任何帖子发表评论”【参考方案14】:

我最终不得不删除我的实例并使用相同的磁盘创建一个新实例。详情请见https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh#use_your_disk_on_a_new_instance。

【讨论】:

【参考方案15】:

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

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

这个技巧对我很有效。

【讨论】:

【参考方案16】:

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

【讨论】:

【参考方案17】:

我有同样的问题。

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

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

【讨论】:

【参考方案18】:

尝试切换到其他互联网连接


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

(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].

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

【讨论】:

【参考方案19】:

您的规则可能只允许列入白名单的 IP SSH 进入 gcloud 虚拟机。所以你可能忘记启用你的工作 *** 或离开你工作的办公室 IP。

【讨论】:

【参考方案20】:

尝试重新启动计算机。

我遇到了同样的错误并尝试了前面提到的 gcloud config ssh 无济于事。然后我检查了 serviceaccount 和 developer 的 ID 和角色是否具有“编辑”权限,这很好。我启动了一个新实例并注销了所有其他谷歌帐户,但它仍然抛出错误。然后,我重新启动了计算机,但没有重新登录我的其他 Google 帐户。这样就解决了。

【讨论】:

【参考方案21】:

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

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

如果您是这种情况,那么修复很简单:删除该用户的实例元数据条目,键组合(已附加图像作为参考,只需单击 X 并删除您的故障键)并再次尝试 ssh

【讨论】:

以上是关于错误:(gcloud.compute.ssh)[/usr/bin/ssh] 退出并返回代码 [255]的主要内容,如果未能解决你的问题,请参考以下文章

如何解决:Gcloud compute ssh SFATAL ERROR: No supported authentication methods available (server sent: pu

远程服务器返回错误: 404错误远程服务器返回错误:500错误 HttpWebResponse远程服务器返回错误:(404500) 错误。

Pig 安装错误:错误 pig.Main:错误 2998:未处理的内部错误

Informix 错误:发生了语法错误。错误代码:-201

我收到一个错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 错误与有效负载”

错误精灵错误跟踪器错误