使用`vagrant ssh`后的Vagrant SSH隧道

10

我的MySQL客户端(Sequel Pro)已设置为通过SSH连接到Vagrant。 我在~/.ssh/config文件中进行了以下设置:

Host vagrant
  HostName 127.0.0.1
  CheckHostIP no
  Port 2222
  User vagrant
  IdentityFile ~/.vagrant.d/insecure_private_key

如果我没有运行 vagrant ssh,一切都正常工作。但是一旦我使用该命令登录到Vagrant框中,Sequel Pro就无法再通过SSH连接了-它只会显示“SSH隧道意外关闭”。因此,我必须在连接到MySQL服务器之前运行 vagrant reload

有人知道如何解决这个问题吗?


当我需要将端口9001从vagrant内部转发回本地机器127.0.0.1和端口9002时,你的问题对我非常有帮助,就像这样:ssh -L 9002:127.0.0.1:9001 vagrant - jmunsch
5个回答

22

我曾经遇到同样的问题,最后发现是 known_hosts 文件中有一个旧密钥。

所以,我执行了以下操作:

$ vi ~/.ssh/known_hosts

我找到了一行文字里的 127.0.0.1:2200,输入指令 dd 删除它。
:x 保存并成功连接,太棒了。Jambi长命百岁。

希望这能帮到需要的人。干杯!


这对我很有帮助!谢谢!还要注意,如果你的vagrantfile指定了一个“:private_network” IP地址,你也必须从“known_hosts”中删除那一行。“bam bob's yer uncle” - 真喜欢这个词。哈哈。 - ctlockey
点赞仅因提到了我的叔叔。他会很高兴的。 :) - Jack_Hu

15

我通过使用端口转发而不是SSH隧道来解决了这个问题。我在Vagrantfile中添加了以下内容:

config.vm.network :forwarded_port, guest: 3306, host: 8306

然后通过端口8306连接到MySQL。


这是我在运行El Capitan的Mac上找到的唯一有效解决方案。我已经添加了对MySQL的权限;删除了127.0.0.1known_hosts条目并重新添加;编辑了my.cnf文件以进行各种更改等等。但重要的是,这似乎是正确的解决方案。 - wired00

3

我曾经遇到过类似的问题。我挣扎了一整天,甚至看了 Jeffrey Way 的 Vagrant 和 Sequel Pro 视频。但问题仍然存在,我甚至尝试在Vagrant文件中更改端口转发号码,以及其他所有可能的方法都尝试了。但以下操作解决了我的问题。

当我执行了 vagrant reload 命令后,问题得以解决。

  default: 22 => 2200 (adapter 1)

但是,当我在 Sequel Pro 中设置连接时,我写了 SSH PORT: 2222,这是基于上面链接中的视频。然而,当我改成使用 vagrant reload 看到的数字后,它要求我进行验证。我选择了“是”,接着连接成功了。经历了一天的挣扎,终于有了一个美满的结局。希望未来的读者不用像我一样浪费一天时间才能解决问题;)


由于某种原因,我将其设置为端口2222,但我注意到在config.yaml文件中它指向22号端口,因此我在我的Sequel Pro设置中将其更改为22号端口,然后将其设置为.vagrant/machines/default/virtualbox/文件夹中的private_key文件。 - Brad

1
尝试从vagrant项目的文件夹中加载另一个密钥
例如:{vagrant_project}/.vagrant/machines/default/virtualbox/private_key

0

除了上述问题之外,可能还有以下问题:

  • "insecure_private_key" 仅在首次启动时使用。除非您已禁用该功能(insert_key=false),否则 vagrant 将使用随机生成的密钥替换该密钥,并存储在 .vagrant/machines/{machinename}/{providername}/private_key 中。

    您可以在 ssh_config 中使用该密钥。

  • 如果连接来自本地主机而不是“外部” IP 地址,则您的 MySQL 设置会执行某些不同的操作。


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