我刚刚在 Google 云上建立了一个新的测试实例...它是 Debian,即默认的 Google 版本。
我已经能够使用 SSH 控制台(来自 Chrome)和 gcloud shell 成功连接到实例。两者都使用 Google 生成的密钥。
我想使用 Putty 从我的 Windows 桌面访问它,这样我就可以执行设置端口转发等操作。因此,我遵循了 Google 的(非常详细和丰富的)说明,并尝试了多种方法,但到目前为止都没有成功。一般来说,我使用 PuttyGen 为各种帐户生成密钥,然后以各种方式和位置将这些密钥上传到 Google 云……但我尝试过的所有组合都没有奏效。在每种情况下,当我尝试登录服务器时,我都会"server refused our key"
看到"Putty Fatal Error: No supported authentication methods available (server sent: publickey)."
我已启用操作系统登录(通过将enable-oslogin = TRUE
标志添加到元数据)。
以下是我尝试上传公钥的一些方法:
- 使用控制台 GUI 在项目元数据中
- 在虚拟机元数据中使用控制台 GUI
- 通过使用控制台 GUI 将密钥添加到实例中,直接在实例中
- 使用 gcloud 命令 shell(进入实例)
- 入
~/.ssh/authorized_keys
(粘贴入)。
我已经使用几个不同的帐户完成了上述大部分操作:
- 我的“所有者”帐户(以我的名字命名)
- 第二个帐户包含网站域名和我的名字。(此帐户与其他访问方法配合使用效果很好。)
- Google 生成的服务帐号
我通过在“PuttyGen”注释字段中使用每个帐户名称来完成此操作,然后再次在[电子邮件保护]在 Putty 主机字段中,每个密钥一个名称。(我从 Gcloud 控制台获取了 IP 地址,它似乎运行正常)。
我一直非常小心地遵循 Google 记录的密钥格式,并且密钥似乎在控制台中正确且成功地显示了正确的用户名。在 gcloud 命令 shell 中,它们的格式似乎也正确。
我尝试通过查看进行调试/var/log/auth.log
,但没有显示太多内容。我也尝试在 Putty 中进行调试,但没有得到更多信息。
我对此感到有点沮丧……我试图自力更生,但有点沮丧。有没有其他方向或方法的建议,或者我可能做错了什么?
我在 RHEL 上尝试了同样的事情,得到了同样的结果。忘了提一下,在第一次登录过程开始时,Putty 会像往常一样缓存服务器密钥,因此它正在连接,只是没有进行身份验证。
有人遇到过类似的问题吗?我以前见过与 Google 云错误相关的类似问题报告,但这些错误似乎已经修复。我以为这会很简单,我以前用过 Putty 很多次,没有遇到任何问题,但到目前为止我有点迷茫。
提前感谢任何帮助或建议。
答案1
我最终找到了解决方案……似乎我可能将错误格式的公钥文件放入了实例数据中。我能够使用 gcloud shell 删除文件(ssh-keys remove),将格式正确的文件上传到 gcloud shell,然后执行 ssh-keys add --file-name=<my_key_file> 来安装它。然后它在 RHEL 上工作了。我原来的 Debian 实例仍然坏了,但新的 Debian 实例似乎没问题,我可以用 PuTTY 连接到它。