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

时间:2014-10-04 14:00:15

标签: ssh gcloud

在指示错误(255)的几秒钟空闲后,我不断被我的计算引擎实例踢出。 我使用了&#; gcloud compute ssh'登录。 我正在使用默认的防火墙设置,我认为这对ssh来说已经足够了。 但是,如果我遗漏了某些内容,请指出并建议修复此错误。 基本上我不能在这一点上完成任何有效的工作,不得不多次ssh。

提前致谢。

Anh-

22 个答案:

答案 0 :(得分:19)

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

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

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

答案 1 :(得分:10)

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

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

答案 2 :(得分:2)

对于那些停在此页面的人。这有助于我解决问题。 尝试以下方法:

  • 转到您的Google并删除服务器的SSH密钥
  • 再次运行gcloud命令

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

答案 3 :(得分:2)

我错误地指出默认防火墙允许所有连接进入实例。事实证明是相反的。请参阅an appropriate firewall rule must be set up to allow connection into an instance

映 -

答案 4 :(得分:1)

我知道这是很久以前打开的,但是为了这个主题的最新更新。我在通过 ssh 连接时遇到了同样的问题。它给出了错误代码 225。显然存在连接问题。在 #include <cstdlib> #include <iostream> #include <vector> using namespace std; class A { private: int v1; public: void setv1(int v1) { this->v1 = v1; } int getv1() { return v1; } virtual void print() { cout << v1 << endl; } }; class B : public A { private: int v2; public: void setv2(int v2) { this->v2 = v2; } int getv2() { return v2; } void print() { A::print(); cout << v2 << endl; } }; int main() { vector<A *> vect; B *b = new B(); vect.push_back(b); vect.at(0)->setv2(5); } -> VPC networkFirewall allow 下已经设置了防火墙规则。但是,要解决此问题,我必须转到特定网络并在网络防火墙规则下创建规则。 ssh -> VPC network details 并为端口 FIREWALL RULES 创建入站 TCP 规则。

答案 5 :(得分:1)

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

有时,在使用通过GCP控制台提供的gcloud sdk ssh片段创建实例后,它停止工作并持续出现255错误,使得仅通过GCP控制台可通过浏览器访问该计算实例的实例上的ssh连接。更不用说这在许多不同的实例上发生在我身上,有些实例在初始设置和部署后没有触及默认帐户权限,这太令人沮丧了。原因无缘无故,它只是停止工作...就可以了,然后就不...

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

gcloud computing ssh newuser-name @ instance-name

所有GCP文档都位于此处:https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh

文档中所有建议均通过了其他所有操作-端口22以访问权限打开,这意味着默认用户Authorization_keys必须存在问题,而他们绝对没有提供有关如何解决该问题的文档-至少我在修复时找不到任何内容(不是创建或删除)

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

gcloud computing-项目“项目名称” ssh-区域“ us-east4-a”“实例名称”

只是行不通... -甚至尝试过'gcloud computing config-ssh --force-key-file-overwrite'没什么...

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

这是一种解决方法,但我讨厌类似的解决方法,但出于我的理智,这种方法至少可以起作用,直到我能弄清楚如何重置默认帐户权限为止,这样,如果有人在那里有任何想法或可以指出我的想法,一个方向,我将不胜感激!

答案 6 :(得分:1)

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

答案 7 :(得分:0)

尝试重新启动计算机。

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

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

最后将源映像添加到磁盘,然后我就可以将其SSH到虚拟机了。

希望这对某人有帮助。

答案 11 :(得分:0)

我有同样的问题。

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

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

enter image description here

答案 12 :(得分:0)

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

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

答案 13 :(得分:0)

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

答案 14 :(得分: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].

对我有用的东西 我尝试重新安装很多东西并重新初始化各种配置,然后落入thread上,这建议更改您正在使用的Internet网络,并且可以正常工作!

答案 15 :(得分:0)

对我来说,我的其他队友能够登录到计算机,但我无法登录。因此,我要求他们创建一个具有sudo权限的我的名字的用户,登录到串行控制台,然后将passwordAuthentication更改为yes,然后更改为sudo service ssh restart(很少有人使用sudo service sshd restart

发布此信息后,我可以使用 ssh -o PreferredAuthentications=password username@publicIP -p 22

这个技巧对我来说很好。

答案 16 :(得分:0)

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

答案 17 :(得分:0)

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

答案 18 :(得分:0)

当我尝试ssh进入实例时,我得到了相同的错误代码。

我尝试重新创建此答案中提到的ssh密钥;但是那没有帮助。

起作用的是:

  • 通过Compute Engine-> VM实例从浏览器的Google云控制台中启动VM实例,然后
    • 通过单击复选框并单击“开始”按钮来选择实例

start by selecting instance

  • 单击实例名称,这将带您到实例页面,在此单击开始按钮。

start instance on instance page

实例成功启动后,您可以从终端ssh进入实例。

我已经通过尝试两次来验证了这一点。

答案 19 :(得分:0)

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

答案 20 :(得分:0)

如果已编辑默认网络,或者未使用默认网络,则可能需要explicitly enable ssh access by adding a firewall-rule

<label>Date time: 
    <input placeholder="dd/mm/yyyy hh:mm" data-slots="dmyh">
</label><br>
<label>Telephone:
    <input placeholder="+1 (___) ___-____" data-slots="_">
</label><br>
<label>MAC Address:
    <input placeholder="XX:XX:XX:XX:XX:XX" data-slots="X" data-accept="[\dA-H]">
</label><br>

然后,重试'gcloud compute ssh'命令。

答案 21 :(得分:-4)

也许这会对某人有所帮助。当我在我工作的防火墙后面时遇到了这个问题。一旦我连接到公共wifi,一切都很完美。