谷歌云实例无法通过腻子连接 - 获取“不支持的身份验证方法可用(服务器发送:公钥)”

Posted

技术标签:

【中文标题】谷歌云实例无法通过腻子连接 - 获取“不支持的身份验证方法可用(服务器发送:公钥)”【英文标题】:Google Cloud Instance Not able to Connect through Putty - Getting "Not Supported Authentication Methods Available (server sent : public key)" 【发布时间】:2020-10-31 04:22:40 【问题描述】:

我是 Google Cloud 的新手,但通过查看一些文档和论坛,我已按照以下所有步骤操作。不确定我是否遗漏了配置或什么。任何帮助将不胜感激

在 Google Cloud 上创建实例 已下载 PuttyGen 并生成密钥 更新了实例密钥以及项目元数据 尝试从 Putty 连接时出现以下错误

不知道发生了什么。我也尝试了来自 *** 和 google 组的其他帖子的所有帮助。但对我来说似乎没有任何改变。可能简单到我没看?

【问题讨论】:

这不是编程问题。 道歉马丁。下次会注意的。 【参考方案1】:

我已尝试按照您的步骤进行操作,但没有发现任何问题。

请看下面的命令:

创建测试虚拟机实例;

download PuTTY 和 PuTTYgen ;

按照documentation 并生成 SSH 密钥:

    单击生成并按照屏幕上的说明生成新密钥。在大多数情况下,默认参数很好,但您必须 生成至少 2,048 位的密钥。当你完成 生成密钥时,该工具会显示您的公钥值。

    Key comment 部分中,将现有文本替换为您将为其应用密钥的用户的用户名。

    您可以选择输入密钥密码来保护您的密钥。

    点击保存私钥将您的私钥写入扩展名为.ppk的文件。

    点击保存公钥将您的公钥写入文件以供日后使用。暂时保持 PuTTYgen 窗口打开。

按照文档Adding or removing project-wide public SSH keys 在Metadata 页面添加公共密钥项目范围:

使用项目范围的公共 SSH 密钥为用户提供对 Linux 实例。项目范围的公共 SSH 密钥使用户可以访问所有 项目中允许项目范围的公共 SSH 的 Linux 实例 键。如果实例阻止项目范围的公共 SSH 密钥,则用户不能 使用他们的项目范围的公共 SSH 密钥连接到实例 除非将相同的公共 SSH 密钥也添加到实例元数据中。

或按照文档Adding or removing instance-level public SSH keys 在实例级别执行此操作:

实例级公共 SSH 密钥使用户可以访问特定的 Linux 实例。拥有实例级 SSH 公钥的用户可以访问 Linux 即使它阻止了项目范围的公共 SSH 密钥。

将私钥添加到 PuTTY 并使用您在生成密钥时在 Key comment 部分使用的用户名连接到 VM 实例,我能够通过使用任何其他用户名重现您的错误这一步

另外,看看OS Login 功能:

OS Login 可让您使用 Compute Engine IAM 角色来授予或撤消 SSH 访问您的 Linux 实例。操作系统登录是管理的替代方法 通过在元数据中添加和删除 SSH 密钥来访问实例。

【讨论】:

感谢您的详细解答。我遵循了相同的步骤。除了我不确定什么是操作系统登录。是否有通过第三方客户端进行 SSH 的替代方法?我们希望通过 Putty、WinSCP 或 bitvise 等第三方客户端来实现。但无法从任何客户那里获得成功。有什么我想念的吗?是否必须启用操作系统登录?我们需要先在 Linux 中创建用户,然后再创建 SSH 密钥吗?我知道这是奇怪的问题,但需要更清楚地说明这一点。我与 AWS 和 Digital Ocean 合作过,他们非常直接。谷歌云似乎很难。 1。查看文档中提供的图片,并确保在生成 SSH 密钥、将它们添加到元数据或实例属性并登录到实例时使用相同的用户名。我能够使用错误的用户名重现您的问题。 2。无需提前创建用户。 3。请使用您的配置的屏幕截图更新您的问题,以便我能够检查它们。 感谢您的回复。我能够与步骤中的一个变化联系起来。根据具有密钥生成的文档,提到更改“密钥注释”并保存公钥和私钥。我没有更改默认值,它成功运行。可能是什么原因?如果我必须将“关键评论”更改为熟悉的名称,我应该如何使用 PuttyGen? 您可以保留默认值Key comment,但在这种情况下,您应该根据documentation 将其用作您的username:“在关键评论中部分,将现有文本替换为您将为其应用密钥的用户的用户名。”。建议将其更改为更方便的值。为此,您可以将username 放在那里,以便在使用 PuTTYgen 生成密钥时登录您的 VM 实例。 如果对您有帮助,请点赞/接受我的回答。

以上是关于谷歌云实例无法通过腻子连接 - 获取“不支持的身份验证方法可用(服务器发送:公钥)”的主要内容,如果未能解决你的问题,请参考以下文章

谷歌云健康检查失败

谷歌云内存存储(Redis),实例刚启动时无法连接到redis

为啥谷歌云外壳会在 1 小时后自动断开连接

客户端无权发出此请求 - 在尝试通过 java 获取 google cloud sql 实例时

谷歌云sql数据读取审计日志

停止和启动深度学习谷歌云虚拟机实例导致 tensorflow 停止识别 GPU