【问题标题】:Connection refused on Google Cloud VM after snapshot restoration快照恢复后,Google Cloud VM 上的连接被拒绝
【发布时间】:2018-09-06 12:17:37
【问题描述】:

从快照还原磁盘后,我在访问我的一个虚拟机(此处称为 myvm1)时遇到问题。这是我昨天所做的(效果很好):

  • 我制作了 disk1 的快照。
  • 我使用上面创建的快照创建了一个名为 disk2 的新磁盘。
  • 我通过 Google 控制台将磁盘附加到 myvm1。
  • 我卸载了 disk1 并安装了 disk2。
  • 我删除了disk1。

一切正常,disk2 上的数据库数据可以根据需要访问。该磁盘上没有其他内容。

今天,我想做的是将disk2“重命名”为disk1(以避免将来我们的Terraform设置出现问题)。我通过执行以下操作来做到这一点:

  • 我制作了 disk2 的快照。
  • 我使用上面的快照创建了一个新磁盘,称为 disk1。
  • 我使用终端将磁盘附加到 myvm1: gcloud compute --project=myproject instances attach-disk myvm1 --disk disk1

之后,当我尝试 ssh 进入 myvm1(卸载和挂载)时,我得到一个

ssh:连接到主机 myvm1 端口 22:连接被拒绝

我已尝试以下方法来解决/调查:

  • 反复停止和启动 VM(比同一项目中的其他 VM 花费的时间要长得多)
  • 分离 disk1(并重新连接它)

其他信息:

  • 仍可通过 ssh 访问同一项目中的其他 VM。
  • 我昨天或今天对 VM 没有做任何其他事情,除了上面写的内容。该系统从昨天到现在都没有使用过(为了省钱,它被关闭了一夜)。
  • 使用 Google 控制台 SSH 不起作用,但它也不适用于其他 VM,因为我们使用私钥进行连接。
  • “实例正在启动,sshd 尚未运行。” - 它被列为 RUNNING。
  • “实例未运行 sshd。”我没有手动禁用 sshd。
  • “sshd 正在侦听您正在连接的端口以外的端口。”我没有对端口进行任何更改。
  • “没有防火墙规则允许在端口上进行 SSH 访问。”此外,在“防火墙规则和路由详细信息”下启用了端口 22。此外,防火墙规则与同一项目中的其他虚拟机相同。
  • “允许 SSH 访问的防火墙规则已启用,但未配置为允许来自 GCP Console 服务的连接。”我们不希望能够通过 GCP Console 进行连接,所以这没关系。
  • “实例已关闭。” - 它正在运行。

ssh 调用的调试信息:

我@mycomputer:~/project$ ssh myvm1 -vvv OpenSSH_7.2p2 Ubuntu-4ubuntu2.4,OpenSSL 1.0.2g 2016 年 3 月 1 日 debug1:读取配置数据 /home/me/.ssh/config debug1:读取配置数据 /etc/ssh/ssh_config debug1:/etc/ssh/ssh_config 第 19 行:为 * 应用选项 debug2:解析“myvm1”端口 22 调试2:ssh_connect_direct:需要priv 0 debug1:连接到 myvm1 [10.23.0.3] 端口 22。 debug1:连接到地址 10.23.0.3 端口 22:连接被拒绝 ssh:连接到主机 myvm1 端口 22:连接被拒绝

我看过这里提到的解决方案 Why Google Cloud Compute Engine instance gives ssh connection refused after restart? 但由于我还没有安装/卸载任何磁盘,所以我看不出这可能是同一个问题。

非常感谢您能给我的任何帮助。涉及创建新实例的解决方案不相关,因为我想知道首先出了什么问题,这样就不会在生产环境中发生这种情况。幸好 myvm1 只是一个沙盒系统。

【问题讨论】:

    标签: ssh google-cloud-platform google-compute-engine snapshot


    【解决方案1】:

    端口 22 错误可能来自两个来源:防火墙未在 GCP 上正确设置或端口 22 不接受来自您的实例内的 SSH 连接。假设防火墙设置正确,因为它适用于其他实例,请尝试使用串行控制台登录并检查您的iptable

    为了连接到串行控制台,您必须执行以下操作:

    1)。激活“连接到串行控制台”按钮。

    转到虚拟机实例,点击您的虚拟机,编辑,并在远程访问区域中激活“启用连接到串行端口”,然后点击保存。

    2)。创建用户名和密码。

    转到 Vm 实例,再次单击您的 Vm,编辑并填写自定义元数据部分:

    输入键:startup-script

    价值:

    #!/bin/bash 
    sudo useradd -G sudo pamela
    sudo echo 'pamela:pamela5' | chpasswd
    

    (这是一个创建用户名:pamela 和密码:pamela5 的脚本,您稍后将使用它。出于安全目的,请使用其他内容)

    3)。需要重新启动才能使更改生效。

    【讨论】:

    • 接下来要做什么?
    【解决方案2】:

    我遇到了同样的问题。我认为快照文件已损坏。

    【讨论】: