错误:(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 <instance-name>
【参考方案8】:
关于登陆此页面的人的更多信息,如果您使用抢占式实例来节省一些计算成本,这也可能是被这样踢出的原因。您的实例可能刚刚随机停止。
【讨论】:
【参考方案9】:在我的例子中,我为虚拟机创建了一个可引导磁盘,但没有添加它需要拥有的源映像的信息。因此,即使实例运行正常并且存在 ssh-allow 规则,VM 也没有启动。
最后将源映像添加到磁盘,我可以通过 ssh 进入虚拟机。
希望这对某人有所帮助。
【讨论】:
【参考方案10】:我有同样的错误。我重新启动了 VM 实例并且 ssh 工作正常
【讨论】:
【参考方案11】:我遇到的问题是,单击 SSH 按钮后,它会继续尝试建立连接并失败。经过长时间的努力,我通过为自己添加服务帐户用户角色来解决它。如果您的帐户是在创建 VM 实例之后创建的,则可能会导致这种情况。
【讨论】:
这正是我所缺少的部分。我有一个从roles/compute.osLogin
和roles/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:未处理的内部错误