将实例级公共 SSH 密钥添加到 GCE 实例

将实例级公共 SSH 密钥添加到 GCE 实例

管理元数据中的 SSH 密钥 | Compute Engine 文档 | Google Cloud然后,我通过添加我的公钥(格式如下)编辑了实例级 SSH 公钥元数据:

ssh-rsa [密钥值] [用户名]

仍无法连接。

/var/log/auth.log

Apr 18 15:24:19 web0 sshd[5080]: Invalid user staging from X.X.X.X port 52403
Apr 18 15:24:19 web0 sshd[5080]: input_userauth_request: invalid user XXX [preauth]
Apr 18 15:24:19 web0 sshd[5080]: error: Received disconnect from X.X.X.X port 52403:14: No supported authentication methods available [preauth]
Apr 18 15:24:19 web0 sshd[5080]: Disconnected from X.X.X.X port 52403 [preauth]

请指教。

答案1

当您使用以下命令创建私钥/公钥对时:

ssh-keygen -t rsa -C "[email protected]"

您的电子邮件地址应该已经存在于生成的公钥文件(通常id_rsa.pub默认命名)中。

因此,您只需复制此文件的内容并将其直接粘贴到控制台中的实例 ssh-keys 部分。所以是的,您编写的格式是正确的,但确保输入正确的最可靠方法是直接从公钥文件中复制它。

验证您是否已将公钥输入到实例 SSH 密钥部分的一种方法是检查您的用户名是否出现在您粘贴公钥的框左侧,如您的链接文章。

如果没有出现,这可能表明密钥格式错误。如果是这种情况,我建议检查粘贴的密钥中是否有新行。您应该能够将光标放在框中粘贴的密钥的开头,然后从头到尾按右箭头键。如果有任何新行,请将其删除,以使密钥连续。

如果以上内容都不相关,那么一些额外的信息将会很有用。您尝试从哪里连接?此外,您使用什么命令来连接到实例?

编辑:

由于 SSH 密钥中的用户没有出现在 /etc/passwd 文件中,这表明Linux 客户环境没有运行,这反过来意味着元数据没有传播到实例。我相信 Linux 客户环境中的 Compute Engine 帐户守护程序可能是造成此问题的原因。

您可以尝试运行以下命令来查看它是否处于活动状态:

sudo systemctl list-units --all | grep google 

如果它未激活/安装,则有一些有用的信息这里关于如何启动服务,或者如果实例上尚未安装 Linux 客户环境,则安装它。

相关内容