我是谷歌云的新手,我刚刚部署了我的第一个实例,直到昨天它都运行良好,上次我使用这个教程来设置电子邮件服务器电子邮件服务器,但现在我无法在浏览器中连接 ssh,也无法在终端中连接 google cloud sdk。
网站运行正常,我不知道发生了什么,请帮忙
浏览器中的错误消息
Connection Failed, and we are unable to connect VM on port 22.
终端中的错误消息
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].
并且串行控制台输出其显示
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] –
答案1
看起来您已经添加了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 实例中分离。这可以通过开发人员控制台或使用以下命令完成:
$ gcloud compute instances detach-disk EXAMPLE-INSTANCE --disk DISK
现在使用您的固定启动盘创建一个新实例。