我设置vagrant在主机操作系统上运行vm . 我想做的是能够从其他机器直接进入流浪者vm(即,我不应该进入宿主,然后流浪汉ssh等进入流浪者vm) .
目前,我可以ssh不使用 ssh vagrant@127.0.0.1 -p 2222
从主机操作系统中使用vagrant ssh . 但是,如果我运行相同的命令(用主机的IP地址替换127.0.0.1),我得到"ssh connect to host XXXXX port 2222: Connection refused."
我尝试将自己的端口转发规则添加到vagrant:
config.vm.network :forwarded_port, guest: 22, host: 2222
但是,这不允许来自主机或网络中任何其他机器的ssh连接 . 另外,我在流浪文档中花了一段时间用config.ssh . 我认为大多数这些参数虽然指定了vagrant vm运行ssh的端口 .
我真的不认为这应该是那么困难 . 有谁知道我可能做错了什么,或者我应该做些什么来从远程服务器ssh到vagrant vm?
4 回答
如果您不想将网络更改为公共,则可以通过以下方式覆盖ssh的默认端口转发:
这会将guest 22端口转发到主机上的2222,并且可以通过任何ip访问,因此您可以在本地计算机外部访问它 .
自v1.2.3 Vagrant端口转发 by default binds with 127.0.0.1 so only local connections are allowed .
你得到"Connection refused"因为端口转发没有绑定到你的网络接口(例如eth0,wlan0) . 主机上的端口
2222
甚至不对同一网络中的主机开放(其他主机无法访问环回接口) .如果要从远程主机(在同一LAN中)直接SSH到Vagrant VM,最好和最简单的方法是使用公共网络(VirtualBox的桥接网络模式) .
将以下内容添加到
Vagrantfile
并执行vagrant reload
.它应该通过其中一个公共网络接口桥接,您应该能够在VM启动后获取IP地址,然后运行
ifconfig -a
或ip addr
以从远程主机获取ssh到的IP地址 .样品
Vagrantfile
或更高级,您可以为公共网络设置默认网络接口
查看更多内容=> Public Network
您还可以将另一个规则添加到
Vagrantfile
,如下所示:使用默认端口(2222)连接到Vagrant并编辑
/etc/ssh/sshd_config
,然后在Port 22
下面添加先前配置为'guest'的端口,从而产生:最后,重新启动ssh守护程序或执行
vagrant reload
(如果在VM运行时编辑了Vagrantfile
,则必须重新加载它),现在您可以使用'host'端口(在我的情况下为22)从主机外部连接到Vagrant .您无法删除默认端口,因为Vagrant在启动时会挂起 .
使用vagrant share --ssh
Vagrant现在有一项服务,用于自动注册Vagrant VM以进行远程SSH访问 .
看这里:https://www.vagrantup.com/docs/share/ssh.html
你打电话给
vagrant share --ssh
.这会生成一个SSH密钥(加密和密码保护),将其上传到Hashicorp服务器,并返回一个愚蠢的全局框名称(例如"rambunctious-deer-3496") .
那么大家呢
有一个Hashicorp Atlas account
知道盒子名称,
知道密钥的密码,和
安装了Vagrant(!)
可以通过
vagrant connect --ssh BOXNAME
执行远程SSH到框 .Vagrant负责幕后的所有管理员工作(这里是some details) .
像宣传的那样工作 .
我想如果Vagrant主机(不仅仅是VM)在NAT后面,这甚至可以工作 .
限制:
vagrant share
个会话到期(currently after 8 hours)期望一些延迟,因为所有流量(推测)都是通过Altas服务器路由的
我已经看到我的远程连接关闭(没有明显的原因)我可能在15分钟后没用过它们 .