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

pal*_*dhi 2 ssh google-compute-engine google-cloud-platform ubuntu-14.04

我无法通过ssh连接到GCE.它显示Connection Failed,我们无法在端口22上连接VM.

并且串行控制台输出它的节目

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 [preauth] - 错误信息

昨天它工作正常,但今天它显示这个错误.我是GCE的新手.有什么建议?

Kam*_*ran 8

UPDATE

我想发布此更新,提及2016年6月发布了一项新功能,您可以在其中启用对串行控制台的交互式访问,以便您可以更轻松地对无法正常启动或无法访问的实例进行故障排除.有关更多信息,请参阅与串行控制台交互.

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

看起来你已经添加AllowUsers/etc/ssh/sshd_config配置文件.

要解决此问题,您需要将VM实例的引导磁盘作为第二个磁盘附加到正常实例.挂载它,编辑配置文件并解决问题.

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

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

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

    $ gcloud compute instances delete NAME --keep-disks all
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在将磁盘作为附加磁盘附加到正常实例.您可以通过Developers Console或使用以下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实例中分离它.这可以通过Developers Console或使用以下命令完成:

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