繁体   English   中英

Google Compute Engine - 在 debian 升级后无法通过 ssh 连接到它

[英]Google Compute Engine - can't ssh to it after debian upgrade

我将我的 Debian 实例从 wheezy 升级到 jessie。 一切顺利。 我重新启动了系统,无法再从计算引擎实例页面通过 ssh 连接到它。 我注意到系统确实重新启动,具有不同的外部 IP 地址。 我能够访问我在虚拟机上运行的 Web 服务器,所以我知道一切都已正确升级和重新启动。 Google 为其分配了一个新的外部 IP,我无法再登录了。

sshd 不再运行的可能性很小,因此当我无法访问 GCP 上的实例时,这是我的个人调试步骤:

  1. 检查两次 ssh 参数(ssh 密钥、登录用户、IP 地址)
  2. 尝试连接时激活 ssh 调试日志 ( -v )
  3. 尝试使用 Cloud Shell
  4. 检查 GCP 和本地网络上的防火墙规则
  5. 查看实例串口的启动日志
  6. 在 GCP > Compute > Metadata 中向您重新发送 SSH 密钥(有时您机器上的 google 用户代理会出现错误)

之后,您通常知道如何连接到您的实例,或者您知道 sshd 服务器出了什么问题。

您可以查看受影响实例的串行端口日志以获取有关该问题的可能线索。 如果您有实例磁盘的快照,则可以创建新的 VM。 根据问题,最近的更改可能影响了实例启动顺序和 sshd_config 文件。

要解决这个问题,您可以启用交互式访问,通过串口控制台连接到实例并输入串口访问信息以访问磁盘,查看ssh配置文件$ sudo vi /etc/ssh/sshd_config$ sudo vi /etc/ssh/ssh_config

如果您没有串行控制台的 root 密码,您可以使用启动脚本将其添加到您的实例中,如下所示:

  1. 转到 Google Cloud Platform 控制台中的 VM 实例页面。
  2. 单击要为其添加启动脚本的实例。
  3. 单击页面顶部的编辑按钮。
  4. 单击“启用连接到串行端口”
  5. 在自定义元数据下,单击添加项目。
  6. 将“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

  1. 单击保存,然后单击页面顶部的重置。 您可能需要等待一段时间才能重启实例。
  2. 单击页面上的“连接到串口”。
  3. 在新窗口中,您可能需要稍等片刻,然后按一下键盘上的 Enter 键; 然后,您应该会看到登录提示。 10.. 使用您提供的用户名和密码登录。

示例: Username: test1 AND Password: pass@100

您还可以共享串行端口日志的清理版本,以获取有关实例上可能发生的情况的更多信息。 这不是由于 IP 地址的变化,但是串口日志应该能让我们更深入地了解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM