我无法通过ssh连接到GCE。它显示Connection Failed,我们无法在端口22上连接VM。
串口控制台输出其节目
Jul 8 10:09:26 Instance sshd [10103]:错误:无法加载主机密钥:/ etc / ssh / ssh_host_ed25519_key
Jul 8 10:09:27 Instance sshd [10103]:不允许0.0.0.0的用户名,因为未在AllowUsers中列出
Jul 8 10:09:27 Instance sshd [10103]:input_userauth_request:用户名无效[preauth] 7月8日10:09:27实例sshd [10103]:连接关闭0.0.0.0 [preauth] -
昨天它工作正常,但今天它显示了这个错误。我是GCE的新手。有什么建议吗?
答案 0 :(得分:8)
更新
我想发布此更新,提及2016年6月发布了一项新功能,您可以在其中启用对串行控制台的交互式访问,以便您可以更轻松地对无法正常启动的实例进行故障排除无法访问。请参阅Interacting with the Serial Console for more information。
您似乎已在AllowUsers
配置文件中添加了/etc/ssh/sshd_config
。
要解决此问题,您需要将VM实例的引导磁盘作为第二个磁盘附加到正常运行的实例。安装它,编辑配置文件并解决问题。
以下是解决问题的步骤:
首先,拍摄实例磁盘的快照,如果发生丢失或损坏,您可以恢复磁盘。
在开发人员控制台中,单击您的实例。取消选中Delete boot disk when instance is deleted
,然后删除该实例。引导磁盘将保留在“磁盘”下,现在您可以将磁盘附加到另一个实例。您也可以使用gcloud
命令执行此步骤:
$ gcloud compute instances delete NAME --keep-disks all
现在将磁盘作为附加磁盘附加到正常实例。您可以通过开发人员控制台或使用gcloud
命令执行此操作:
$ gcloud compute instances attach-disk EXAMPLE-INSTANCE --disk DISK --zone ZONE
SSH进入健康的实例。
确定辅助磁盘的存放位置:
$ ls -l /dev/disk/by-id/google-*
装载磁盘:
$ sudo mkdir /mnt/tmp
$ sudo mount /dev/disk/by-id/google-persistent-disk-1-part1 /mnt/tmp
其中google-persistent-disk-1
是磁盘的名称
修改sshd_config
配置文件并删除AllowUsers
行并保存。
$ sudo nano /mnt/tmp/etc/ssh/sshd_config
现在取消磁盘:
$ sudo umount /mnt/tmp
将其从VM实例中分离出来。这可以通过Developers Console或使用以下命令完成:
$ gcloud compute instances detach-disk EXAMPLE-INSTANCE --disk DISK
现在使用固定启动盘创建一个新实例。