mysql 无法连接 SSH 隧道 -> 拒绝访问“无”

Posted

技术标签:

【中文标题】mysql 无法连接 SSH 隧道 -> 拒绝访问“无”【英文标题】:mysql could not connect the SSH tunnel -> access denied for 'none' 【发布时间】:2021-03-16 14:30:35 【问题描述】:

我有一台只能通过 SSH 访问的服务器,我已经在这台服务器上安装了 mysql。并创建了一个远程用户,以便我可以使用 mySQL 工作台进行开发,但是当尝试使用 MySQL 工作台 GUI 进行 SSH 时,我收到以下错误:无法连接可以继续公钥的 SSH 隧道身份验证。

我能够从服务器本身连接到用户,并且没有任何问题,我已经检查了权限,并且似乎为该用户激活了远程访问:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| developer        | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

我已经填写了以下内容:

SSH Hostname <server-IP>
SSH username root
SSH password <clear>
SSH Key File <privat key file>

MySQL Hostname 127.0.0.1
MySQL Server Port 3306
Username <user>
Password <password>
Default Schema <empty>

【问题讨论】:

【参考方案1】:

我在连接到 MySQL 时遇到了类似的问题,想分享我的解决方案,以防其他人在这里结束。

问题发生在两种不同的情况下。

场景一: 我使用我的服务器生成的私钥成功访问了 MySQL 数据库(我正在使用 CPanel)。我从服务器中删除了相应的公钥(错误地),然后尝试重新连接并收到错误。

这里的解决方案当然是重新生成密钥。

场景二: 我尝试使用 OpenSSH 生成的私钥访问 MySQL 数据库。我将密钥的位置设置为 C:/Users/username/.ssh/id_rsa 并收到错误。

这里的解决方案是将 OpenSSH 私钥转换为 RSA 私钥。

ssh-keygen -p -m PEM -f C:/Users/username/.ssh/id_rsa

确保事先备份您的 OpenSSH 私钥,因为这会覆盖 id_rsa。

然后我可以使用 RSA 私钥连接到 MySQL 服务器。

您可以通过在任何文本编辑器中查看它们并阅读第一行来区分这两种类型的键。它将显示 OPENSSH 或 RSA。

【讨论】:

我必须把它给你,你的第二个场景允许我连接。让我真的拉我的头发。我的私钥是 OpenSSH 格式,而 MySQL Workbench 不喜欢这样。谢谢。【参考方案2】:

对我来说,实际上反之亦然——我的密钥是 RSA 私钥,必须将其转换为 OpenSSH。然后 MySQL Workbench 连接成功。 我想任何有类似问题的人都可以尝试以任何一种方式转换私钥。

【讨论】:

我整天都在与它作斗争。这正是我连接 MySQL Workbench 所需要的。 您是如何从 RSA 转换为 OpenSSH 的?如果您将此代码 sn-p 添加到您的解决方案中,那就太好了。【参考方案3】:

就我而言,当我选择id_rsa.pub 而不是id_rsa 时出现问题,所以当我选择id_rsa 时出现问题!

【讨论】:

我不明白,为什么不喜欢?在相同的错误结果中,它对我来说是 100% 有效的解决方案! 这个解决方案对我有用。非常感谢。【参考方案4】:

我必须从我的密钥文件中删除密码以允许 MySQL Workbench 使用它。

【讨论】:

【参考方案5】:

对于那些像我一样尝试通过 PuTTY 生成的 SSH 密钥进行连接的人:

    使用 PuTTYGen 打开私钥。它会询问私钥密码。 转到转换->导出 OpenSSH 密钥菜单。 它会要求将文件名分配给转换后的 OpenSSH 密钥。给它一个不同于的名称,而不是您开始使用的 PuTTY 私钥。 在 MySQL Workbench 中,使用转换后的密钥作为“SSH 密钥文件”。询问时,输入私钥密码。 此时它应该已连接。

【讨论】:

以上是关于mysql 无法连接 SSH 隧道 -> 拒绝访问“无”的主要内容,如果未能解决你的问题,请参考以下文章

通过 SSH 隧道的 MySQL 连接

MySQL 通过 SSH 隧道连接 - 如何指定其他 MySQL 服务器?

通过 SSH 隧道的 mySQL 连接字符串,无需密码

无法使用 JDBC 连接通过 SSH 隧道连接到 Azure DB

使用 SSH 隧道时无法通过套接字错误连接到本地 MySQL 服务器

在具有特定 mysql 主机的远程主机上使用 SSH 隧道连接到 MySql 数据库