VM重启后无法SSH Google Cloud VM实例

时间:2017-09-26 02:53:17

标签: ssh google-cloud-platform google-compute-engine ubuntu-16.04 gcloud

我正在使用Google Cloud Platform并通过Google Cloud Console连接到我的VM实例。重新启动VM而不保留静态IP因此在VM重新启动时,临时IP已更改。我重新启动VM的原因是因为我注意到CPU利用率一直是100%,我认为这不是我本地VM实例(Ubuntu 16.x)的CPU,而是Google共享容器CPU利用率。但它不允许我通过SSH连接到我的VM实例,所以我认为重启可能有所帮助。

虚拟机重启确实有所帮助,但知识产权发生了变化:(我运行Apache和Nginx服务器,因此我必须手动更新相应配置文件中的新IP才能运行我的应用程序。由于虚拟机重启,我遇到了麻烦通过SSH连接到VM实例。

防火墙规则 - 确定(设置为允许端口22) .ssh / sshd_conf - 好的(RSAauth是的) GCE VM SSH密钥 - 确定(保存用户的公钥)

我尝试了以下步骤解决问题,但徒劳无功

  1. 从元数据和SSH密钥中删除了SSH密钥对,并使用puttyGen
  2. 重新生成了新的公钥
  3. 已验证puttyGen的密钥格式并确保准确的公钥已保存在Google VM实例SSH密钥部分
  4. 当我注意到/etc/ssh/authorized_keys为空时,我使用gcloud init重新初始化,该gcloud command处理oAuth部分,但这并未解决问题
  5. 我在我的本地Google Cloud SDK shell上尝试了server refused key,但它不断抛出错误/var/log/syslog
  6. 最后,来自Sep 25 22:30:01 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 CRON[1746]: (root) CMD (/google/scripts/gcloud_docker_auth.sh) Sep 25 22:33:19 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: credentials-service INFO:root:Proxying devshell request, attempt (1 of 3) Sep 25 22:33:19 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: credentials-service INFO:root:Connecting to DEVSHELL_CLIENT_PORT 40159 Sep 25 22:33:19 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: credentials-service INFO:root:writing to devshell 4 bytes Sep 25 22:33:19 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: credentials-service INFO:root:read from devshell 293 bytes Sep 25 22:33:19 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: credentials-service INFO:root:Closing devshell forwarding connection. Sep 25 22:33:19 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: credentials-service INFO:root:Closing client connection. Sep 25 22:35:01 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 CRON[1774]: (root) CMD (/google/scripts/gcloud_docker_auth.sh) Sep 25 22:37:10 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service INFO:root:saw no newline in the first 6 bytes Retrying...(1$ Sep 25 22:37:14 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service INFO:root:Error, could not connect to devshell. Retrying...$ Sep 25 22:37:22 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service ERROR:root:Error, could not connect to devshell. Giving up. Sep 25 22:37:22 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service Traceback (most recent call last): Sep 25 22:37:22 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service File "/google/credentials/control_server.py", line 110, i$ Sep 25 22:37:22 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service self.hanging_socket.connect(('localhost', self.server_p$ Sep 25 22:37:22 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service File "/usr/lib/python2.7/socket.py", line 224, in meth Sep 25 22:37:22 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service return getattr(self._sock,name)(*args) Sep 25 22:37:22 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service error: [Errno 111] Connection refused Sep 25 22:37:22 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: 2017-09-25 22:37:22,640 INFO exited: control-command-service (exit status 0; expect$ Sep 25 22:37:23 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: 2017-09-25 22:37:23,642 INFO spawned: 'control-command-service' with pid 1801 Sep 25 22:37:23 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service INFO:root:Error, could not connect to devshell. Retrying...$ Sep 25 22:37:23 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service INFO:root:Error, could not connect to devshell. Retrying...$ Sep 25 22:37:24 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: 2017-09-25 22:37:24,705 INFO success: control-command-service entered RUNNING state$ Sep 25 22:37:27 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service INFO:root:Error, could not connect to devshell. Retrying...$ Sep 25 22:37:27 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service INFO:root:Error, could not connect to devshell. Retrying...$ Sep 25 22:37:34 cs-6000-devshell-vm-c72ffc0b-5c39-48a6-854c-fce64f031c54-41 supervisord: control-command-service INFO:root:Executing health check.

    的tracelog
    and

2 个答案:

答案 0 :(得分:0)

我有类似的问题,在我的情况下,根本原因是我的VM是配置的SSH密钥无法在VM重新启动后幸存(一旦重新启动VM实例,它们将从VM配置中消失)。

不太清楚这是什么真正原因,但是我的拙劣理论是,默认情况下,SSH kyes默认直接存储在引导磁盘上(而不是持久卷),并且在我的情况下,VM已配置为{{1} }选项启用后,我猜想此功能已在重启后以某种方式触发,这意味着SSH密钥已因删除启动磁盘而丢失。

答案 1 :(得分:0)

您的问题可能是访客环境。

  1. 转到Google Cloud Platform控制台中的“ VM实例”页面。
  2. 单击要为其添加启动脚本的实例。
  3. 单击页面顶部的“编辑”按钮。
  4. 点击“启用连接到串行端口”
  5. 在“自定义元数据”下,单击“添加项目”。
  6. 将“密钥”设置为“启动脚本”,并将“值”设置为此脚本:

{#! / bin / bash useradd -G sudo USERNAME 回显“ USERNAME:PASSWORD” | chpasswd}

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

然后在需要获取的实例内部,该实例无法通过验证来宾环境运行:

首先:在串行控制台中查看下面列出的这些行:

  • 启动了Google Compute Engine帐户后台驻留程序
  • 启动了Google Compute Engine IP转发后台程序
  • 启动了Google Compute Engine时钟偏斜守护程序
  • 开始执行Google Compute Engine实例设置
  • 已启动Google Compute Engine启动脚本
  • 启动了Google Compute Engine关闭脚本
  • 启动了Google Compute Engine网络设置

第二:验证是否安装了用于来宾环境的软件包,然后在串行输出中运行命令

apt list --installed | grep google-compute

它应该列出以下行: -谷歌计算引擎 -google-compute-engine-oslogin -python-google-compute-engine -python3-google-compute-engine

第三:您需要通过运行以下命令来验证用于来宾环境的所有服务是否正在运行:

sudo systemctl list-unit-files | grep google | grep enabled

它应该列出以下行:

  • 已启用google-accounts-daemon.service
  • 启用了google-ip-forwarding-daemon.service
  • 已启用google-clock-skew-daemon.service
  • 启用了google-instance-setup.service
  • 已启用google-shutdown-scripts.service
  • 已启用google-startup-scripts.service
  • 启用了google-network-setup.service

如果有时与上述情况有所不同,则可能需要重新启动服务或安装Guest environment