无法通过 SSH 连接到曾经正常工作的 GCP 虚拟机实例

Posted

技术标签:

【中文标题】无法通过 SSH 连接到曾经正常工作的 GCP 虚拟机实例【英文标题】:Cannot SSH into the GCP VM instances that used to work 【发布时间】:2020-12-13 09:21:28 【问题描述】:

我昨天创建了几个 GCP VM 实例,它们都使用相同的配置但运行不同的任务。 我可以通过 GCP 控制台通过 SSH 连接到这些实例,它们都工作正常。 今天我想检查任务是否已完成,但我无法再通过浏览器 SSH 进入任何这些实例...错误消息显示:

Connection via Cloud Identity-Aware Proxy Failed
Code: 4010
Reason: destination read failed
You may be able to connect without using the Cloud Identity-Aware Proxy.

所以我在禁用 Cloud Identity-Award 代理的情况下重试。但随后显示:

Connection Failed
An error occurred while communicating with the SSH server. Check the server and the network configuration.

跑步

gcloud compute instances list

显示了我的所有实例,状态为RUNNING。 但是当我跑的时候

gcloud compute instances get-serial-port-output [instance-name]

使用从上述命令返回的 [instance-name]。 (这是为了检查实例的启动盘是否已用完可用空间。) 它回来了

(gcloud.compute.instances.get-serial-port-output) Could not fetch serial port output: The resource '...' was not found

一些额外的信息: 我正在从同一个互联网(我的家庭互联网)访问 VM 实例,其他一切都相同 我是项目的所有者 我的帐户正在使用 300 美元赠金的 GCP 免费试用版 这些实例的机器类型为 c2-standard-4,并且正在使用 Linux 深度学习 gcloud 配置对我来说很合适:

$ gcloud config list
[component_manager]
disable_update_check = True
[compute]
gce_metadata_read_timeout_sec = 5
[core]
account = [my_account]
disable_usage_reporting = True
project = [my_project]
[metrics]
environment = devshell

更新: 我重置了其中一个实例,现在我可以成功地通过 SSH 连接到该实例。但是,在实例上运行的作业在重置后停止。 我想保持作业在其他实例上运行。有没有办法在不重置的情况下通过 SSH 连接到其他实例?

【问题讨论】:

仔细检查 PROJECT_ID、REGION 和您正在使用的身份。使用命令gcloud auth listgcloud config list。试试gcloud compute instances list。为了帮助您获得答案,不要说“无论如何”。准确发布您尝试过的内容和确切的错误消息。像“来自同一个互联网”这样的陈述没有帮助。除非您在家庭网关/路由器上使用静态 IP 地址(不太可能),否则您的网络可能已经改变。换句话说,要具体细节,不要假设我们可以猜测。 谢谢!我更新了帖子 【参考方案1】:

你的问题是在虚拟机端。您正在运行的任务使 ssh 服务无法接受传入连接,只有在重新启动后您才能连接。

您应该能够使用 gcloud compute instances get-serial-port-output [instance-name] 查看实例的 serial console output,但如果由于某种原因您不是你会看到输出。

您甚至可以interact with your VM (login) via the console。如果某些东西停止了 ssh 服务,这特别有用,但为此您需要登录名/密码,因此首先您必须访问 VM 或使用启动脚本添加带有密码的用户。但话又说回来 - 这需要重新启动。

在任何一种情况下,重新启动 VM 似乎都是最佳选择。但是您可以尝试通过检查日志来找出导致 ssh 服务在一段时间后停止的原因。或者您可以使用crondf -Th /mountpoint/path | tail -n1 >> /name_of_the_log_file.log 创建自己的(磁盘空间、内存、cpu 等)。

例如,您可以使用cron 来检查和启动 ssh 服务。

如果某些事情没有按预期工作(根据文档) - 转到 IssueTracker 并创建一个新问题以获得更多帮助。

【讨论】:

以上是关于无法通过 SSH 连接到曾经正常工作的 GCP 虚拟机实例的主要内容,如果未能解决你的问题,请参考以下文章

无法在 GCP 上打开 vm 实例的 ssh:无法连接到后端(代码:4003)

无法通过 IAP 隧道连接到 GCP 中的笔记本实例

无法通过 ssh 连接到 Github,无法访问 .ssh.config

无法通过 unix 套接字从托管在不同 GCP 项目中的 App Engine 柔性环境连接到 Cloud SQL

无法使用 JDBC 连接通过 SSH 隧道连接到 Azure DB

GCP 云功能无法连接到 GCP SQL 实例