无法在浏览器中通过 SSH 连接到 Google Compute Engine 实例

Cannot connect to Google Compute Engine instance via SSH in browser

我无法通过 ssh 连接到 GCE。它显示连接失败,我们无法在端口 22 上连接虚拟机。

串行控制台输出其显示

7 月 8 日 10:09:26 实例 sshd[10103]:错误:无法加载主机密钥:/etc/ssh/ssh_host_ed25519_key

7 月 8 日 10:09:27 实例 sshd[10103]:不允许来自 0.0.0.0 的用户用户名,因为未在 AllowUsers

中列出

7 月 8 日 10:09:27 实例 sshd[10103]:input_userauth_request:无效的用户用户名 [preauth] 7 月 8 日 10:09:27 实例 sshd[10103]:连接由 0.0.0.0 关闭 [预授权] –

昨天还好好的,今天就报错了。我是 GCE 的新手。有什么建议吗?

更新

我想 post 在此更新中提及 2016 年 6 月发布的一项新功能,您可以在其中启用对串行控制台的交互式访问,这样您就可以更轻松地对无法正常启动的实例进行故障排除或以其他方式无法访问的。参见 Interacting with the Serial Console for more information

-------------------------------------------- --------------------------------------

您似乎在 /etc/ssh/sshd_config 配置文件中添加了 AllowUsers

要解决此问题,您需要将 VM 实例的启动磁盘作为第二个磁盘附加到运行状况良好的实例。安装它,编辑配置文件并修复问题。

以下是您可以采取的解决问题的步骤:

  1. 首先,对实例的磁盘进行快照,万一发生丢失或损坏,您可以恢复磁盘。

  2. 在 Developers Console 中,单击您的实例。取消选中 Delete boot disk when instance is deleted,然后删除该实例。引导磁盘将保留在“磁盘”下,现在您可以将磁盘附加到另一个实例。您也可以使用 gcloud 命令执行此步骤:

    $ gcloud compute instances delete NAME --keep-disks all
    
  3. 现在将磁盘作为附加磁盘附加到运行状况良好的实例。您可以通过开发人员控制台或使用 gcloud 命令执行此操作:

    $ gcloud compute instances attach-disk EXAMPLE-INSTANCE --disk DISK --zone ZONE
    
  4. 通过 SSH 连接到您的健康实例。

  5. 确定辅助磁盘所在的位置:

    $ ls -l /dev/disk/by-id/google-*
    
  6. 挂载磁盘:

    $ sudo mkdir /mnt/tmp
    $ sudo mount /dev/disk/by-id/google-persistent-disk-1-part1 /mnt/tmp
    

其中 google-persistent-disk-1 是磁盘的名称

  1. 编辑 sshd_config 配置文件并删除 AllowUsers 行并保存。

    $ sudo nano /mnt/tmp/etc/ssh/sshd_config
    
  2. 现在卸载磁盘:

    $ sudo umount /mnt/tmp
    
  3. 从 VM 实例中分离它。这可以通过开发人员控制台或使用以下命令完成:

    $ gcloud compute instances detach-disk EXAMPLE-INSTANCE --disk DISK
    
  4. 现在使用您的固定启动磁盘创建一个新实例。