使用 tmux 和 Vagrant 进行结对编程

使用 tmux 和 Vagrant 进行结对编程

有没有人有关于如何在 Linux 上设置共享 tmux 会话的清晰分步指南?流浪汉vbox,我的同事(在我们本地办公室局域网上)可以通过 SSH 进入吗?我在网上找到的文章似乎只涉及从一台机器到另一台机器的设置(没有虚拟机设置),而且我不太擅长网络,所以我无法推断出解决方案……

顺便说一句,我们办公室里都运行着最新的 Mac。

这是我找到的一篇文章,但无法与 Vagrant 一起使用:http://blog.voxdolo.me/remote-pairing-with-vim-and-tmux.html

编辑:澄清一下,我真的不知道应该如何设置 Vagrant,以便我从托管 VM 的机器之外的机器通过 SSH 进入它。上面的文章建议我tunnels在运行 VM 的物理机器上添加主机(此处称为 MBP),所以我这样做了。接下来是ProxyCommand主机声明,我也假设它应该存在于 MBP 上。

因此接下来我尝试从客户机(我网络上的另一台独立的物理机)通过 SSH 进入 MBP,这似乎可行......但这只能让我进入 MBP,而不是在 MBP 上运行的 Vagrant 映像。

我通常通过(根据文档)在 MBP 上登录 Vagrant 映像vagrant ssh,并且我知道如何将 Vagrant VM 上的端口转发到 MBP,但我不清楚如何将端口/SSH 从 MBP 转发到 Vagrant VM,我认为我需要这样做以便我的客户机可以通过 MBP 通过 SSH 进入我的 Vagrant 映像。

简而言之,这就是我想要实现的目标。我在 Vagrant VM 中完成开发工作,这样可以让我的 MBP 保持干净整洁,不会出现任何与开发相关的垃圾,还可以让我的开发环境完全相互隔离,但我想通过 tmux 与我的同事开始结对编程,这就是我问这个问题的原因。

如果可能的话,我希望完成所有这些操作,而无需在 MBP 上设置额外的用户帐户,或者让我的同事访问我在 MBP 上的本地用户帐户来访问我的 Vagrant VM。


更新:按照@John Whitley 的建议,我一直尝试建立桥接连接,但目前尚未成功。

我的 vagrant 映像上有一个新的网络适配器,设置为桥接,并与主机上的 AirPort 接口绑定:

视窗管理器

然后我可以vagrant ssh进入框并运行ifconfig并看到它是以下 IP 10.0.2.151

vagrant box 上的 ifconfig

但是当我在主机上打开一个新的终端会话并尝试 ping 该地址时,我什么也没得到:

平

我注意到 Vagrant 文档中有关桥接网络的部分(http://vagrantup.com/v1/docs/bridged_networking.html),似乎将桥接设备列为,eth2并在其前面有一个省略号,表明可能还有一个eth1具有不同 IP 的活动设备。我的ifconfigvagrant box 没有两个单独的适配器。启动 vagrant 映像时,系统提示我:

提示桥接网络接口

我总是回复1我的机场,我认为我应该这样做。有什么想法可以让这个工作吗?我的 Vagrant 盒子仍然可以与互联网通信,端口转发仍然有效......

答案1

最简单的做法是向 Vagrant VM 添加一个 Bridged 网络接口。(不要将主网络接口更改为 Bridged 接口,根据 Vagrant 文档.) NAT 接口可以访问外部网络(例如,VM 可以提取包、git repos 等),但外部网络无法访问 VM。仅 NAT 是默认的 Vagrant 网络设置。在 VirtualBox Manager GUI 中,它看起来像这样:

VirtualBox GUI 中的 NAT 接口

VirtualBox Bridged 接口在外部网络中的表现与真实物理主机一样 — 包括从本地 DHCP 服务器获取 IP,以及通过 DDNS 获取分配的域名(如果本地网络为此设置)。这意味着您只需检查虚拟机的 IP 地址(例如通过vagrant ssh -c ifconfig)并直接通过 ssh 进入即可。再次,VB GUI 的屏幕截图:

VirtualBox GUI 中的桥接接口

VirtualBox 网络文档介绍 VM 环境支持的各种“类型”接口,包括本文未介绍的一些接口。文章很短,值得一读。

最后的魔法是正确配置 VirtualBox VM。在你的 Vagrantfile 中,你需要添加如下一行:

config.vm.network :bridged

vagrant reload更改后需要进行才能生效。请参阅Vagrant 桥接网络文档了解有关此方法的更多详细信息。

答案2

通过 NAT 你可以使用这个连接:

ssh -p 2222 vagrant@[IP address of your host machine]

如果您的主机处于代理之下,请将端口 2222 转发到 Internet。

答案3

遇到此问题的人可能都想考虑 wemux:https://github.com/zolrath/wemux

摘自自述文件:

如果你已经安装了 Homebrew,你可以使用以下相当简单的方法安装 wemux:

brew install https://github.com/downloads/zolrath/wemux/wemux.rb

安装 wemux 的用户将自动添加到 wemux 主机列表中。要更改主机或添加更多主机,请编辑 /usr/local/etc/wemux.conf 并将用户名添加到 host_list 数组。

host_list 中的用户将能够启动新的 wemux 服务器,所有其他用户将成为 wemux 客户端并加入这些服务器。

$ vim /usr/local/etc/wemux.conf

或者

$ wemux conf

host_list=(zolrath brocksamson)

相关内容