【发布时间】:2014-11-29 08:57:16
【问题描述】:
在空闲几秒钟后,我一直被踢出我的计算引擎实例,并出现指示的错误 (255)。 我使用“gcloud compute ssh”登录。 我正在使用默认的防火墙设置,我相信这对于 ssh 来说已经足够了。 但是,如果我遗漏了什么,请指出并建议修复此错误。 基本上我现在无法完成任何有效的工作,不得不多次使用 ssh。
提前致谢。
安-
【问题讨论】:
在空闲几秒钟后,我一直被踢出我的计算引擎实例,并出现指示的错误 (255)。 我使用“gcloud compute ssh”登录。 我正在使用默认的防火墙设置,我相信这对于 ssh 来说已经足够了。 但是,如果我遗漏了什么,请指出并建议修复此错误。 基本上我现在无法完成任何有效的工作,不得不多次使用 ssh。
提前致谢。
安-
【问题讨论】:
如果设置发生变化,gcloud 会拒绝 ssh 连接,例如 在您更改了默认地区或区域,或者您创建了另一个实例之后。 然后,您必须通过
更新元数据中的 ssh 密钥sudo gcloud compute config-ssh
如果这抱怨存储 ssh 密钥条目的配置文件中有不同的条目,~/.ssh/config,请删除此文件并再次执行上述命令。
如果你安装了没有sudo的gcloud,你可以省略sudo。
【讨论】:
sudo至少为我解决了上述问题。
255 是 ssh 失败的交互式 ssh 退出代码 - 否则交互式 ssh 将使用 ssh 会话中执行的最后一个命令的退出代码退出。
下次您从 ssh 获得退出代码 255 时,请尝试使用 --ssh-flag="-vvv" 运行(更多 v => 更多调试输出),看看它是否有助于跟踪连接问题。
【讨论】:
对于那些在此页面停留的人。这帮助我解决了问题。 尝试以下操作:
再次运行 gcloud 命令
这似乎是 Google Cloud Platform 本身的功能/问题,我们将继续检查它。
【讨论】:
如果修改了默认网络,或者不使用默认网络,可能需要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”命令。
【讨论】:
这是一个真正的问题,处理它的文档很少。
在使用通过 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被关闭,这件事情怎么办,有什么建议吗?
我的错误是默认防火墙将允许所有连接到一个实例。事实证明恰恰相反。请参考an appropriate firewall rule must be set up to allow connection into an instance
安-
【讨论】:
如果您的设置启用了身份识别代理 (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>
关于登陆此页面的人的更多信息,如果您使用抢占式实例来节省一些计算成本,这也可能是被这样踢出的原因。您的实例可能刚刚随机停止。
【讨论】:
在我的例子中,我为虚拟机创建了一个可引导磁盘,但没有添加它需要拥有的源映像的信息。因此,即使实例运行正常并且存在 ssh-allow 规则,VM 也没有启动。
最后将源映像添加到磁盘,我可以通过 ssh 进入虚拟机。
希望这对某人有所帮助。
【讨论】:
我有同样的错误。我重新启动了 VM 实例并且 ssh 工作正常
【讨论】:
我遇到的问题是,单击 SSH 按钮后,它会继续尝试建立连接并失败。经过长时间的努力,我通过为自己添加服务帐户用户角色来解决它。如果您的帐户是在创建 VM 实例之后创建的,则可能会导致这种情况。
【讨论】:
roles/compute.osLogin 和roles/iam.serviceAccountUser 角色构建的非常简单的自定义角色。我已经拥有roles/iam.serviceAccountAdmin 角色,虽然可以这样做,但事实证明it's not a superset 的roles/iam.serviceAccountUser 角色,它没有授予iam.serviceAccounts.actAs 权限。谢谢!
我知道这是很久以前打开的,但有关此主题的最新更新。我在通过 ssh 连接时遇到了同样的问题。它给出了错误代码 225。显然存在连接问题。在VPC network-> Firewall 下已经设置了防火墙规则到allow ssh。然而,为了解决这个问题,我必须去特定的网络并在网络防火墙规则下创建一个规则。 VPC network details -> FIREWALL RULES 并为端口 22 创建入站 TCP 规则。
【讨论】:
有完全相同的症状 - 在我的情况下,原因似乎如下。我使用的是 root 用户 + ssh 密钥,而在 /etc/ssh/sshd_config(PermitRootLogin 属性)中默认禁用了 root 登录。
【讨论】:
我最终不得不删除我的实例并使用相同的磁盘创建一个新实例。详情请见https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh#use_your_disk_on_a_new_instance。
【讨论】:
对我来说,我的其他队友能够登录机器,但我不能。所以我要求他们用我的名字创建一个具有 sudo 权限的用户,登录到串行控制台并将passwordAuthentication 更改为yes,然后是sudo service ssh restart(少数可能是sudo service sshd restart。)
发布这个我可以登录
ssh -o PreferredAuthentications=password username@publicIP -p 22
这个技巧对我很有效。
【讨论】:
使用“gcloud init”重新初始化 gcloud 并生成新的 ssh 密钥为我解决了这个问题。
【讨论】:
【讨论】:
尝试切换到其他互联网连接
所以,我遇到了同样的错误,但在我的情况下,我根本无法登录到实例。
(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 网络并且它有效!
【讨论】:
您的规则可能只允许列入白名单的 IP SSH 进入 gcloud 虚拟机。所以你可能忘记启用你的工作 VPN 或离开你工作的办公室 IP。
【讨论】:
尝试重新启动计算机。
我遇到了同样的错误并尝试了前面提到的 gcloud config ssh 无济于事。然后我检查了 serviceaccount 和 developer 的 ID 和角色是否具有“编辑”权限,这很好。我启动了一个新实例并注销了所有其他谷歌帐户,但它仍然抛出错误。然后,我重新启动了计算机,但没有重新登录我的其他 Google 帐户。这样就解决了。
【讨论】:
使用 IAP 时,GCP 将密钥存储在实例元数据中,然后传播
到~/.ssh/authorized_keys 文件。
当您从 ~/.ssh/authorized_keys 文件中删除密钥并且它仍在实例元数据中时,您可能会收到 OP 所说的错误。原因是:
~/.ssh/authorized_keys 文件中存在 并且不传播密钥。~/.ssh/authorized_keys 文件中不存在该密钥 - 您会被拒绝访问。如果您是这种情况,那么修复很简单:删除该用户的实例元数据条目,键组合(已附加图像作为参考,只需单击 X 并删除您的故障键)并再次尝试 ssh
【讨论】: