【问题标题】:Google Compute Engine - can't ssh to it after debian upgradeGoogle Compute Engine - debian 升级后无法通过 ssh 访问它
【发布时间】:2019-02-07 00:41:22
【问题描述】:
我将我的 Debian 实例从 wheezy 升级到了 jessie。一切顺利。我重新启动了系统,并且无法再从计算引擎实例页面 ssh 到它。我注意到系统确实以不同的外部 IP 地址重新启动。我能够访问我在虚拟机上运行的 Web 服务器,所以我知道一切都已正确升级和重新启动。 Google 为其分配了一个新的外部 IP,我无法再登录。
【问题讨论】:
标签:
google-cloud-platform
google-compute-engine
ssh-keys
【解决方案1】:
sshd 不再运行的可能性很小,所以当我无法访问 Google Cloud 上的实例时,这是我个人的调试步骤:
- 检查两次 ssh 参数(ssh 密钥、登录用户、IP 地址)
- 尝试连接时激活 ssh 调试日志 (
-v)
- 尝试使用 Cloud Shell
- 检查 GCP 和本地网络中的防火墙规则
- 检查实例串口上的启动日志
- 在 GCP > Compute > Metadata 中重新向您发送 SSH 密钥(有时您机器上的 google 用户代理会出现错误)
之后,您通常知道如何连接到您的实例,或者您知道 sshd 服务器出了什么问题。
【解决方案2】:
您可以查看受影响实例的串行端口日志以获取有关该问题的可能线索。如果您有实例磁盘的快照,则可以创建新 VM。根据问题,最近的更改可能会影响实例启动顺序和 sshd_config 文件。
要解决这个问题,您可以enable interactive access,通过串口控制台连接实例并输入串口访问信息访问磁盘,查看ssh配置文件$ sudo vi /etc/ssh/sshd_config和$ sudo vi /etc/ssh/ssh_config。
如果您没有串行控制台的 root 密码,您可以使用 startup script 将其添加到您的实例,如下所示:
- 转到 Google Cloud Platform 控制台中的 VM 实例页面。
- 单击要为其添加启动脚本的实例。
- 点击页面顶部的编辑按钮。
- 点击“启用连接到串口”
- 在自定义元数据下,单击添加项目。
- 将“Key”设置为“startup-script”并将“Value”设置为此脚本:
#! /bin/bash
useradd -G sudo USERNAME
echo 'USERNAME:PASSWORD' | chpasswd
示例:
#! /bin/bash
useradd -G sudo test1
echo 'test1:pass@100' | chpasswd
- 单击保存,然后单击页面顶部的重置。您可能需要等待一段时间才能重新启动实例。
- 单击页面上的“连接到串行端口”。
- 在新窗口中,您可能需要稍等片刻,然后按一次键盘的 Enter;然后,您应该会看到登录提示。
10.. 使用您提供的 USERNAME 和 PASSWORD 登录。
示例:
Username: test1 AND Password: pass@100
您还可以共享经过清理的串行端口日志版本,以获取有关实例上可能发生的情况的更多信息。这不是由于 IP 地址的变化,但是串行端口日志应该让我们更深入地了解。