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

Rah*_*ngh 3 ssh google-compute-engine google-cloud-platform

我是谷歌云的新手,我刚刚部署了我的第一个实例,直到昨天它都运行良好,我上次使用本教程电子邮件服务器设置电子邮件服务器,但现在我无法在浏览器中连接 ssh,也无法连接谷歌云 sdk在终端。

网站运行正常,我不知道发生了什么 请帮助

浏览器中的错误信息

Connection Failed, and we are unable to connect VM on port 22.
Run Code Online (Sandbox Code Playgroud)

终端中的错误信息

Warning: Permanently added 'xxx.xxx.xxx.xxx' (ECDSA) to the list of known hosts.
Permission denied (publickey).
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].
Run Code Online (Sandbox Code Playgroud)

和串行控制台输出其显示

Jul 8 10:09:26 Instance sshd[10103]: error: Could not load host key:/etc/ssh/ssh_host_ed25519_key

Jul 8 10:09:27 Instance sshd[10103]: User username from 0.0.0.0 not allowed because not listed in AllowUsers

Jul 8 10:09:27 Instance sshd[10103]: input_userauth_request: invalid user username [preauth] Jul 8 10:09:27 Instance sshd[10103]: Connection closed by 0.0.0.0 [preauth] – 
Run Code Online (Sandbox Code Playgroud)

Kam*_*ran 5

看起来您已添加AllowUsers/etc/ssh/sshd_config配置文件中。

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

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

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

  2. 在开发人员控制台中,单击您的实例。取消选中Delete boot disk when instance is deleted然后删除实例。启动磁盘将保留在“磁盘”下,现在您可以将磁盘附加到另一个实例。您也可以使用以下gcloud命令执行此步骤:

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

    $ gcloud compute instances attach-disk EXAMPLE-INSTANCE --disk DISK --zone ZONE
    
    Run Code Online (Sandbox Code Playgroud)
  4. 通过 SSH 连接到您的健康实例。

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

    $ ls -l /dev/disk/by-id/google-*
    
    Run Code Online (Sandbox Code Playgroud)
  6. 挂载磁盘:

    $ sudo mkdir /mnt/tmp
    $ sudo mount /dev/disk/by-id/google-persistent-disk-1-part1 /mnt/tmp
    
    Run Code Online (Sandbox Code Playgroud)

google-persistent-disk-1磁盘名称在哪里

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

    $ sudo nano /mnt/tmp/etc/ssh/sshd_config
    
    Run Code Online (Sandbox Code Playgroud)
  2. 现在取出磁盘:

    $ sudo umount /mnt/tmp
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将其与 VM 实例分离。这可以通过开发人员控制台或使用以下命令来完成:

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