MySQL Workbench (版本6.0.8)SSH认证问题

23

我正在尝试通过Y机器上的SSH连接到X主机上的MySQL服务器。

在我的另一台机器(CentOS 6.3)上使用相同的设置(但是较旧版本的MySQL Workbench)可以正常工作。

然而,在我的CentOS 6.5上,相同的设置不起作用。

我尝试使用SSH密钥在我的计算机和Y机器之间进行身份验证,当我从我的计算机ssh到Y机器时,它可以工作。

但是,MySQL Workbench给了我以下错误: ERROR Could not establish SSH connection: Bad authentication type (allowed_types=['publickey', 'gssapi-with-mic'])。

有人建议我在/etc/ssh/sshd_config中将AllowTcpForwarding设置为yes,我已经这样做了,重启了服务并重新启动了机器。

但我仍然得到相同的错误。

有任何想法吗?

看起来由于某些原因,MySQL Workbench在尝试连接时没有选择 .ssh/id_dsa 密钥。

提前感谢。


MySQL Workbench不会自动识别id_rsa。您是否在连接设置中设置了它? - Mike Lischke
嗯...我以为会的,因为旧版本(5.x)可以。不过,我尝试指定私钥文件,但它给了我相同的错误。 - Hei
我们在新电脑上使用MySQL Workbench时也遇到了这个问题。我们的服务器仅配置为接受密钥文件验证的SSH连接。但是,MySQL似乎最初完全忽略了SSH密钥文件参数。有时候似乎有帮助的是让用户通过Mac上的终端或Windows上的cygwin进行SSH登录。因为某种原因,在此之后,MySQL Workbench似乎能够工作。我不知道为什么。到目前为止提供的解决方案没有任何效果。 - Adam Easterling
9个回答

60

您需要确保您的私钥是以openssh格式保存的。使用puttygen,您可以导出为Openssh格式。这对我有效。


1
完美的答案...将密钥加载到puttykeygen中,转换>导出OPENSSH密钥。 - Bira
还可以在MobaXterm中使用。工具 -> MobaKeyGen -> 加载密钥文件 -> 导出OPENSSH密钥 - Britic
非常好用,感谢你的帮助。 - Ajjay Arora

22

转换为OpenSSH可以解决此问题。只需执行以下操作:

  1. 打开Putty密钥生成器。
  2. 通过导航到“文件”->“私钥”并从您保存私钥文件的位置加载私钥 - 您应该在Putty中看到已加载密钥。
  3. 现在进入对话并导出到OpenSSH - 将文件保存在安全位置。
  4. 进入Workbench,在SSH密钥文件下将其指向新的OpenSSH文件,而不是旧的私钥文件。这应该解决您的问题。

13

最近我又遇到了这个问题。如果您使用密码保护的私钥,并且刚刚升级到macOS Sierra,则可能需要重新将私钥添加到密钥链中。

ssh-add -K ~/.ssh/id_rsa

这立即为我解决了问题。


这对我有用,MacOS High Sierra,v10.13.4 我的id_rsa密钥受到密码保护。 - Suhan Dharmasuriya
似乎Mysql Workbench会自动选择id_rsa密钥,即使您指定了不同的密钥。 - Jk33
没有固定,不起作用,我已经尝试了所有的方法。重新生成了4次密钥。 - user2568374

4
在 Mac OS 上,按照以下步骤操作,因为这是我唯一有效的方法 -: 步骤1
brew install putty

步骤2

puttygen id_rsa -O private-openssh -o id_rsa.pem

第三步 - 在MySQL工作台中

SSH Key File: /Users/local/.ssh/id_rsa.pem

只是澄清一下:就像这里的一个之前的答案显示的那样,这种方法会创建一个您现有的_id_rsa_密钥的版本,但具有_.pem_扩展名。在执行此操作之前,我备份了我的密钥(公用/私用),但它非常顺利。 - Mahsan Nourani

2
我在macOS上使用Navicat和MySQL Workbench时遇到了同样的问题。感谢这篇文章中的Jonathan,帮我解决了问题。macOS用户需要先安装puttygen,然后按照Jonathan在其教程中所说的将ppk格式转换为pem格式,然后TADA!一切都能正常工作!

1

对我来说,使用 .pem 扩展名的密钥可以正常工作。 因为我只有 ppk 密钥,所以我需要将 .ppk 转换为 .gem。

为了转换它,我在 Ubuntu 终端中使用了一个叫做 eating 的工具:

$ puttygen key.ppk -O private-openssh -o key.pem

1

对于Linux系统和工作台,其必须使用pkcs8格式而非rfc格式...

因此应以OpenSSH格式导出,但需采用pkcs8格式。


我在Ubuntu上遇到了这个问题。我该如何将密钥文件转换为PKCS#8? - salerokada
通常情况下,您可以在导出命令中选择格式。 - cyril
是的,但是PKCS#8的关键字是什么? 我搜索了一下,但没有找到有用的东西。我正在使用这个命令: puttygen key-fil -O private-openssh -o new-key.pem。我应该使用什么来代替private-openssh? - salerokada
抱歉,我使用了可执行版本,也许你可以在 GUI 中使用 OpenSSH 并选择导出。 - cyril

0

我花了3-4天的时间尝试了许多不同的解决方案,但除了以下方法外,没有一个适用于我。

我使用XAMPP在Windows上运行MySQL和本地主机。我停止了我的机器上的两个服务,然后尝试使用Workbench连接SSL连接,它成功连接了。


0
对于使用ssh-keygen的Linux用户:
根据其他答案,您需要使用openssh格式。
ssh-keygen -o -b 4096

这给了我一个新的RSA类型4096位的密钥对,以openssh格式呈现。这里关键的是-o选项(无双关语意)。

显然,这会生成一个新的密钥,因此只有在您可以上传新的公钥到服务器时才有用。不要忘记先备份旧密钥,以防您在其他地方使用它们。

据我所知,ssh-keygen没有将现有密钥转换的能力。

为什么Oracle放弃支持普及的PEM格式超出了我的理解范围。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接