连接MySQL Workbench到Vagrant时出现SSH问题

3

我正在尝试使用MySQL Workbench连接我的vagrant MySQL服务器。如下图所示,它显示了一些错误。

error screenshot

以下是Workbench错误日志:

17:34:50 [INF][     SSH tunnel]: Existing SSH tunnel not found, opening new one
17:34:50 [INF][     SSH tunnel]: Opening SSH tunnel to 127.0.0.1:2222
17:34:50 [ERR][   sshtunnel.py]: Traceback (most recent call last):
  File "/usr/share/mysql-workbench/sshtunnel.py", line 231, in _connect_ssh
    look_for_keys=has_key, allow_agent=has_key)
  File "/usr/lib/python2.7/dist-packages/paramiko/client.py", line 337, in connect
    self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys)
  File "/usr/lib/python2.7/dist-packages/paramiko/client.py", line 528, in _auth
    raise saved_exception
AuthenticationException: Authentication failed.
17:34:50 [ERR][     SSH tunnel]: Authentication error opening SSH tunnel: Authentication error. Please check that your username and password are correct and try again.

下面是vagrant up命令的输出:

==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 => 6216 (adapter 1)
    default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...

命令vagrant ssh在终端中运行正常。我在这里做错了什么?

@ydaetskcoR 不行,它显示“ssh: Could not resolve hostname 127.0.0.1:2222: Name or service not known”。我已经添加了vagrant up命令的输出。 - Krishna Raj
这些听起来像是不同的问题。你提问中的错误在于它连接到了盒子,但是却未能通过身份验证。而你评论中的错误则是没有与盒子建立连接。你确定虚拟机正在运行吗? - ydaetskcoR
是的,可以。我可以通过浏览器访问URL,并通过终端进行SSH访问。 - Krishna Raj
@ydaetskcoR 我已经尝试使用 -p 进行 ssh,它可以工作。但是默认密码不起作用。 - Krishna Raj
@ydaetskcoR 经过谷歌搜索,我解决了这个问题。我将它发布为答案,以便将来遇到同样问题的人可以参考。感谢您的帮助。 - Krishna Raj
显示剩余2条评论
3个回答

9
如果你运行vagrant ssh-config命令,它会显示正在使用哪个密钥。它通常不使用.vagrant.d/insecure_private_key,而是使用项目目录中的一个密钥,例如.vagrant/machines/default/virtualbox/private_key
如果你在MySQL连接面板中指定该密钥,你应该能够登录而无需添加另一个密钥到虚拟机中。

你救了我的一天!谢谢。 - Honiix
我根据其他示例使用了错误的密钥(.vagrant.d中的insecure_private_key)。这解决了问题,谢谢! - Esteban

2

关于您在评论中提到的错误: 使用ssh时,您不需要像这样指定端口

ssh 127.0.0.1:2222

您必须使用选项-p。

ssh 127.0.0.1 -p 2222

这应该是一条注释,而不是一个答案。 - Krishna Raj
1
抱歉,我的声望不够高,无法进行评论。只是想指出您的正确方向。 - Martin Kalcok
谢谢你。不管怎样,我已经解决了这个问题。 - Krishna Raj

2
经过一些搜索,我通过将我的ssh公钥添加到vagrant的授权密钥文件中使其工作。以下是步骤。
  1. 生成你机器上的ssh密钥
  2. /home/{username}/.ssh/id_rsa.pub文件中复制你的公钥
  3. 在终端中打开vagrant ssh
  4. 使用一些编辑器来编辑 /home/vagrant/.ssh/authorized_keys(比如:nano /home/vagrant/.ssh/authorized_keys)
  5. 将你的公钥粘贴到该文件的末尾并保存
完成!

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