从远程服务器转发ssh的vagrant

时间:2013-10-06 01:07:55

标签: ssh vagrant

我设置vagrant在主机操作系统上运行vm。我想做的是能够从其他机器直接进入流浪者vm(即,我不应该进入宿主,然后流浪汉ssh等进入流浪者vm)。

目前,我可以使用ssh vagrant@127.0.0.1 -p 2222来避免使用来自主机操作系统的vagrant ssh。但是,如果我运行相同的命令(用主机的IP地址替换127.0.0.1),我得到" ssh连接到主机XXXXX端口2222:连接被拒绝。"

我尝试将自己的端口转发规则添加到vagrant:

config.vm.network :forwarded_port, guest: 22, host: 2222

但是,它不允许来自主机或网络中任何其他计算机的ssh连接。另外,我在流浪文档中花费了一段时间config.ssh。我认为大多数这些参数虽然指定了vagrant vm运行ssh的端口。

我真的不认为这应该是那么困难。有谁知道我可能做错了什么,或者我应该做些什么来从远程服务器ssh到vagrant vm?

4 个答案:

答案 0 :(得分:32)

如果您不想将网络更改为公共,您可以通过以下方式覆盖ssh的默认端口转发:

config.vm.network :forwarded_port, guest: 22, host: 2222, host_ip: "0.0.0.0", id: "ssh", auto_correct: true

这会将guest 22端口转发到主机上的2222,并且可以通过任何ip访问,因此您可以在本地计算机外访问它。

答案 1 :(得分:18)

自v1.2.3以来,Vagrant端口转发默认绑定为127.0.0.1,因此只允许本地连接

您的“连接已拒绝”,因为端口转发未绑定到您的网络接口(例如eth0,wlan0)。主机上的端口2222甚至不对同一网络中的主机开放(其他主机无法访问环回接口)。

如果要从远程主机(在同一LAN中)直接SSH到Vagrant VM,最好和最简单的方法是使用公共网络(VirtualBox的桥接网络模式)。

将以下内容添加到Vagrantfile并执行vagrant reload

它应该通过其中一个公共网络接口桥接,您应该能够在VM启动后获取IP地址vagrant ssh并运行ifconfig -aip addr以获取从远程主机ssh到的IP地址。

示例Vagrantfile

<!-- language: lang-rb -->

config.vm.network :public_network # 2nd interface bridged mode

或更高级,您可以为公共网络设置默认网络接口

<!-- language: lang-rb -->

config.vm.network "public_network", :bridge => 'en1: Wi-Fi (AirPort)'

查看更多=&gt; Public Network

答案 2 :(得分:6)

您还可以向Vagrantfile添加另一条规则,如下所示:

config.vm.network :forwarded_port, guest: 1234, host: 22

使用默认端口(2222)连接到Vagrant并编辑/etc/ssh/sshd_config,然后在Port 22下面添加先前配置为“guest”的端口,结果:

...
Port 22 #Uncomment this line if it's commented
Port 1234
....

最后,重新启动ssh守护程序或执行vagrant reload(如果您在VM运行时编辑了Vagrantfile,则必须重新加载它),现在您可以使用“host”端口连接到Vagrant(22在我的情况下)来自主机外部。

您无法删除默认端口,因为Vagrant在启动时会挂起。

答案 3 :(得分:1)

使用vagrant share --ssh

Vagrant现在有一项注册Vagrant VM的服务 用于远程SSH访问。

见这里:https://www.vagrantup.com/docs/share/ssh.html

您致电vagrant share --ssh 这会生成一个SSH密钥(加密和密码保护), 将其上传到Hashicorp服务器, 并返回一个愚蠢的全局框名称(例如&#34; rambunctious-deer-3496&#34;)。

的每个人
  • 有一个Hashicorp Atlas account
  • 知道方框名称,
  • 知道密钥的密码,
  • 安装了Vagrant(!)

可以通过远程SSH执行到框 vagrant connect --ssh BOXNAME
Vagrant负责幕后的所有管理员工作(这里是some details)。

按宣传的方式工作。
猜测如果Vagrant主机(不仅仅是VM)位于NAT后面,它甚至可以工作。

限制:

  • vagrant share个会话到期(currently after 8 hours
  • 期待一些延迟,因为所有流量都是(推测) 通过Altas服务器路由
  • 我看到我的远程连接关闭了(没有明显的原因) 在我没有使用它们可能15分钟之后。