mysql 无法连接 SSH 隧道 -> 'none' 的访问被拒绝

mysql could not connect the SSH tunnel -> access denied for 'none'

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

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

+------------------+-----------+
| 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>

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

问题出现在两种不同的场景中。

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

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

场景二: 我尝试使用 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。

对我来说,反之亦然 - 我的密钥是 RSA 私钥,必须将其转换为 OpenSSH。然后MySQLWorkbench连接成功。 我想无论谁有类似的问题,都可以尝试以任何一种方式转换私钥。

在我的例子中,当我 select id_rsa.pub 而不是 id_rsa 时出现问题,所以当我 select id_rsa 问题消失时!

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

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

  1. 使用 PuTTYGen 打开私钥。它会询问私钥密码。
  2. 转到转换->导出 OpenSSH 密钥菜单。
  3. 它会询问分配给转换后的 OpenSSH 密钥的文件名。给它取一个与您开始使用的 PuTTY 私钥不同的名称。
  4. 在 MySQL Workbench 中使用转换后的密钥作为“SSH 密钥文件”。询问时,输入私钥密码。
  5. 此时应该可以连接了。