在空闲几秒钟后,我一直被踢出我的计算引擎实例,并出现指示的错误 (255)。我使用“gcloud compute ssh”登录。我使用的是默认防火墙设置,我相信这对于 ssh 来说已经足够了。但如果我遗漏了什么,请指出并建议修复此错误。基本上我现在无法完成任何有效的工作,不得不多次使用 ssh。
23 回答
如果设置发生更改,gcloud 将拒绝 ssh 连接,例如在您更改默认区域或区域之后,或者您创建了另一个实例之后。然后,您必须通过以下方式更新元数据中的 ssh 密钥
sudo gcloud compute config-ssh
如果这抱怨存储 ssh 密钥条目的配置文件中有不同的条目,~/.ssh/config,删除此文件并再次执行上述命令。
如果你安装了没有 sudo 的 gcloud,你可以省略sudo
.
255 是 ssh 失败的交互式 ssh 退出代码 - 否则交互式 ssh 将使用 ssh 会话中执行的最后一个命令的退出代码退出。
下次您从 ssh 获得退出代码 255 时,请尝试使用 --ssh-flag="-vvv" 运行(更多 v => 更多调试输出),看看它是否有助于跟踪连接问题。
对于那些在此页面停留的人。这帮助我解决了问题。尝试以下操作:
- 转到您的 Google 并删除服务器的 SSH 密钥
- 转到您的谷歌云控制台->计算引擎->元数据->“SSH密钥”选项卡,然后单击编辑。在这里您可以删除 ssh 密钥。
再次运行 gcloud 命令
- 单击您的谷歌云帐户左侧的“实例”链接,该链接将列出右侧的所有实例。在连接栏下,您将看到“SSH”下拉菜单,单击“查看云命令”,这将带来一个新对话框。复制该命令并在您的 PC 终端上运行。这将让您通过 SSH 连接到谷歌计算引擎。
这似乎是谷歌云平台本身的一个功能/问题,我们将继续检查它。
如果编辑了默认网络,或者不使用默认网络,您可能需要通过添加防火墙规则来显式启用 ssh 访问:
$ gcloud compute firewall-rules create --network=YOUR_NETWORK \
default-allow-ssh --allow tcp:22
之后,重试“gcloud compute ssh”命令。
这是一个真正的问题,处理它的文档很少。
在使用通过 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 继续使用该用户
这是一种变通方法,我讨厌为这样的事情变通,但为了我的理智,这至少在我弄清楚如何重置默认帐户权限之前有效,所以如果有人有任何想法或可以指出我的方向我非常感激!
我的错误是默认防火墙将允许所有连接到一个实例。事实证明恰恰相反。请参阅必须设置适当的防火墙规则以允许连接到实例
安-
如果您为您的设置启用了身份识别代理 (IAP),请尝试将--tunnel-through-iap
选项添加到gcloud compute ssh
命令中。
$ gcloud compute ssh --zone <zone> --project <project> --tunnel-through-iap <instance-name>
我知道这是很久以前打开的,但是关于这个主题的最新更新。我在通过 ssh 连接时遇到了同样的问题。它给出了错误代码 225。显然存在连接问题。在VPC network
-> Firewall
to下已经设置了防火墙规则allow
ssh
。然而,为了解决这个问题,我必须去特定的网络并在网络防火墙规则下创建一个规则。 VPC network details
->FIREWALL RULES
并为 port 创建一个入站TCP
规则22
。
我有同样的错误。我重新启动了 VM 实例并且 ssh 工作正常
我遇到的问题是,单击 SSH 按钮后,它会继续尝试建立连接并失败。经过长时间的努力,我通过为自己添加服务帐户用户角色来解决它。如果您的帐户是在创建 VM 实例之后创建的,则可能会导致这种情况。
就我而言,我为 VM 创建了一个可引导磁盘,但没有添加它需要拥有的源映像的信息。因此,即使实例运行正常并且存在 ssh-allow 规则,VM 也没有启动。
最后将源映像添加到磁盘,我能够通过 ssh 进入虚拟机。
希望这对某人有所帮助。
登陆此页面的人的更多信息,如果您使用抢占式实例来节省一些计算成本,这也可能是被踢出这样的原因。您的实例可能刚刚随机停止。
如果您在尝试从计算机终端远程访问 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
使用 IAP 时,GCP 将密钥存储在实例元数据中,然后将其传播到~/.ssh/authorized_keys
文件中。当您从文件中删除密钥并且它仍然在实例元数据中
时,您可能会收到 OP 所说的错误。~/.ssh/authorized_keys
原因是:
- GCP 检查您用于 ssh 的用户键组合是否已在实例元数据中。
- 它假定该
~/.ssh/authorized_keys
用户的文件中存在 并且不传播密钥。 ~/.ssh/authorized_keys
由于无论出于何种原因(您删除了它,其他人删除了它等等),文件中都不存在密钥- 您会被拒绝访问。
如果您遇到这种情况,那么修复很简单:删除该用户的实例元数据条目,键组合(已附加图像作为参考,只需单击X
并删除您的错误键)并再次尝试 ssh
尝试切换到不同的 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 网络的线程并且它有效!
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.
使用“gcloud init”重新初始化 gcloud 并生成新的 ssh 密钥为我解决了这个问题。
您可能有一条规则,只允许列入白名单的 IP ssh 进入 gcloud 虚拟机。因此,您可能忘记启用您的工作 VPN 或离开您工作的办公室 IP。
有完全相同的症状 - 在我的情况下,原因似乎如下。我使用的是 root 用户 + ssh 密钥,而默认情况下,在 /etc/ssh/sshd_config (PermitRootLogin 属性)中禁用了 root 登录。
我最终不得不删除我的实例并使用相同的磁盘创建一个新实例。有关详细信息,请参阅https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh#use_your_disk_on_a_new_instance。
对我有用的是打开我的防火墙。(在 Mac 上,通过 ssh 连接到 gcp 实例)。
在另一个错误实例中,当我在以太网上时,我的连接工作正常,但在我使用 wifi 时却不行。切换回以太网允许我再次连接。
对我来说,我的其他队友能够登录机器,但我不能。所以我要求他们用我的名字创建一个具有 sudo 权限的用户,登录到串行控制台并更改passwordAuthentication
为yes
后跟sudo service ssh restart
(很少这可能是sudo service sshd restart
。)
发布这个我可以登录
ssh -o PreferredAuthentications=password username@publicIP -p 22
这个技巧对我来说很好。