首页 > 解决方案 > 如何从 ~/.ssh/google_compute_engine 恢复私钥

问题描述

我在使用VM_instanceGC 时被卡住了。我获准加入一个现有项目并设法创建了一个 VM 实例(让我们称之为myInstance)。

GCP 已自动 为我创建为=>user_first的用户。事实是,由于某些原因,在重新启动后,我无法再通过 ssh 加入此实例。myInstanceuser_first@myInstance

在论坛上进行了一些检查后,我Gcloud compute config-ssh随后设置了...看起来VM已经创建了一个新用户user_first_gmail_com... => user_first_gmail_com@myInstance

这里的问题是如何回到初始用户user_first

否则我怎么能得到密码,user_first以便我可以sudo按原样而不是按原样user_first_gmail_com

感谢您的宝贵帮助:-)

标签: google-cloud-platformsshgoogle-compute-enginegcloud

解决方案


默认情况下,GCP 的虚拟机使用 SSH 密钥而不是密码来验证用户身份。所以本质上 - 用户获得了一个 SSH 密钥并且无法使用密码登录。因此 - 你无法恢复它。

最快且最成熟的方法是使用启动脚本,该脚本实际上会向该 VM 添加用户和密码:

echo "username:password" | chpasswd

更多关于在此处添加用户的信息

然后启用串行控制台交互并使用给定的凭据登录。

之后进入用户的主目录;/home/usershomedir/.ssh/ and you will find all the keys in authirized_keys 文件。

这将允许您读取密钥并可能以常规方式访问实例。

但是你得到的原因有很多Permission denied (publickey). ERROR:。检查主磁盘是否未满。如果是这样,则系统功能无法正常工作(例如登录用户)。

我正在粘贴我自己对另一个类似问题的回复

如果您启用了操作系统登录,您可以通过在 IAM 中授予适当的角色来控制对 VM 的访问。向启用了操作系统的 VM 授予 SSH 访问权限的最方便和集中的方法是创建一个专用服务帐户并授予它 SSH 访问权限

最好尝试更新您的 SSH 密钥gcloud compute os-login ssh-keys update

如果您禁用了操作系统登录(默认设置,除非您的组织强制启用它),那么您可以尝试使用gcloud compute config-ssh.

如果您仍然无法连接,您可以查看通用SSH 故障排除文档

还有一个可能会提示您如何访问您的虚拟机。


推荐阅读