通过ssh代理从宿主机连接VirtualBox虚拟机

VirtualBox默认为客户虚拟机Linux(Guest)提供的是以NAT方式借助宿主机(Host)访问外网。

如果想要从宿主机访问客户机,则相当于从外网访问内网的机器。被隔了一层NAT,客户机可以访问宿主机,宿主机却不可以访问客户机。

如果是实现从宿主机访问客户机,网上的做法几乎都是:在VirtualBox的网络设置那里,增加一个Host-Only的网络,开启Adapter 2并使用此网络。 但是,奇怪的是:我在6.0版本macOS上的VirtualBox上,无论如何都找不到怎样创建一个Host-Only的网络。所以,上面的办法行不通。

然后,由于客户机是可以访问宿主机的,所以我想到了一个简单可行的办法:用ssh代理转发。其实我在《SSH的三种端口转发(Port forwarding)/ 隧道协议概要》早就讲过这种方式。

以下是几个步骤:

开启宿主机和客户机的ssh服务

宿主机:我在之前的一篇文章《快速开启macOS上的ssh服务》提到了怎样在macOS上快速开启ssh服务。这个方法正好用到它。

客户机:sudo apt-get install openssh-server,安装后,sshd会在22号端口上面监听。

从客户机登录宿主机并开启转发

采用ssh的远程转发功能,可以在宿主机上面监听一个端口,来自此端口的连接将会通过ssh隧道转发到指定地点

在虚拟机里面执行以下命令登录宿主机:

$ ssh -L 127.0.0.1:22:192.168.1.100:10022 tao@192.168.1.100

其中:

  • 127.0.0.1:22是客户机的ssh服务地址
  • 192.168.1.100:10022是宿主机的监听地址
  • tao @192.168.1.100 是宿主机的登录用户及地址

请根据自己的情况进行相应的修改。

从宿主机登录到客户机

这上面的命令执行成功以后,就可以通过宿主机的监听地址登录到客户机了。

$ ssh -p 10022 root@192.168.1.100

其中:

  • 10022192.168.1.100是宿主机监听地址
  • root是客户机的登录用户名

如此,就可以成功地登录到客户机(虚拟机)内部的网络了。

发表于:2019年03月18日 ,阅读量:213 ,标签:ssh · 代理 · Virtual Box

版权声明:若非特别注明,本站所有文章均为作者原创,转载请务必注明原文地址。