无法使用 "in browser" SSH 连接到 Google Compute Engine

Unable to connect to Google Compute Engine using "in browser" SSH

更改两个密码后,root 和默认用户,我们突然注意到 "in browser" link Google Compute Engine 无法通过 SSH 连接。

然而,奇怪的是,如果我们从 Google 提供的命令行使用 SSH 命令(即 $ gcloud compute ssh VM-NAME --zone VM-ZONE)- SSH 可以工作。

似乎 SSH 正在工作 - 但 "in browser" SSH link 不再连接。可能出了什么问题,我们该如何解决?

附录: 值得注意的是,下面的一位评论者表示它与密码无关,而只是纯粹的 SSH 密钥——所以如果有一种方法可以在 GCE 实例上重新生成 SSH 密钥,那么看起来这个问题的答案可能会存在。我们正在寻找。如果有人知道为 GCE 重新生成 SSH 密钥的代码,请 post。

默认情况下,GCE VM 不允许使用明文密码进行 SSH 连接:它使用密钥代替。您可以在 VM 实例化期间或稍后指定批准的密钥,但始终存在的密钥是您在创建计算机时使用的用户帐户的密钥。

只要你没有修改/etc/ssh/sshd_config,这种情况应该会继续下去。无论哪种方式,您可以使用的另一种方法是通过 SSH 连接到您的实例 运行 以下命令:

$ gcloud compute ssh VM-NAME --zone VM-ZONE

使用您的授权用户帐户登录时。

ADDENDUM - 代替重新生成以前的密钥,您可以在项目和 VM 级别添加额外的、本地生成的 SSH 密钥。第一个适用于所有 VM 并授予项目所有者和编辑者访问权限,而第二个仅适用于相关 VM。这两种方法都将输入的 SSH 添加到元数据服务器,在 SSH 连接到所有/VM 之前从元数据服务器上传到 VM。

您可以从 Developers Console 执行此操作:

  • 项目级 SSH 密钥 - 转到您的项目 -> 计算 -> 计算引擎 -> 元数据 -> "SSH KEYS"(屏幕顶部) -> 单击 "Edit"

  • VM 级 SSH 密钥 - 转到您的项目 -> 计算 -> 计算引擎 -> VM 实例 -> 单击实例名称 -> "SSH keys" 部分(向下滚动) -> 点击 "Add SSH key"

我们发现原因是我们在 Google 在 Google Compute Engine 实例上创建的主用户目录上执行的 chown 命令.

通过将 chown 反转回 Google 创建的用户,Google 的浏览器内 SSH 再次开始工作。

我们对整个用户目录使用了 chown,还使用 ​​ssh 配置文件返回给 Google 创建的用户,使用:

chown -R user_name_com /home/user_name_com  

还有这个文件

chown user_name_com /etc/ssh/ssh_config 

其中 user_name_com 是我们的 gmail 电子邮件地址用户。