从远程服务器流浪转发 ssh



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

目前,我可以 ssh 不使用主机操作系统中的流浪 ssh ssh vagrant@127.0.0.1 -p 2222 . 但是,如果我运行相同的命令(将 127.0.0.1 替换为主机的 IP 地址(,则会收到"ssh 连接到主机 XXXXX 端口 2222:连接被拒绝"。

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

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

但这不允许来自主机或网络中任何其他计算机的 ssh 连接。 此外,我在流浪者文档中花了一段时间使用config.ssh。 我认为这些参数中的大多数都指定了流浪者 vm 在哪个端口上运行 ssh。

我真的认为这不应该那么困难。 有谁知道我可能做错了什么,或者我应该采取哪些不同的措施来从远程服务器 ssh 到流浪虚拟机?

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

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

这会将来宾 22 端口转发到主机上的 2222,并且可以从任何 IP 访问它,因此您可以在本地计算机外部访问它。

由于 v1.2.3 Vagrant 端口转发默认与 127.0.0.1 绑定,因此只允许本地连接

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

如果要从远程主机(在同一局域网中(直接通过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)'

查看更多 => 公共网络

您还可以

Vagrantfile添加另一个规则,如下所示:

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

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

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

最后,重新启动 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帐户
  • 知道盒子的名字,
  • 知道密钥的密码,并且
  • 安装了流浪者(!

可以通过以下方式对盒子执行远程SSH。 vagrant connect --ssh BOXNAME .
Vagrant负责幕后的所有管理工作(这里有一些细节(。

如广告所示。
我想如果Vagrant主机(不仅仅是VM(在NAT后面,这甚至可以工作。

局限性:

  • vagrant share会话过期(当前为 8 小时后(
  • 预计会有一些延迟,因为所有流量(大概都是(通过 Altas 服务器路由
  • 我看到我的远程连接关闭(没有明显的原因(在我大约 15 分钟没有使用它们之后。

最新更新