我有一个Ubuntu虚拟机运行在我的Windows 7机器上。我如何设置它,以便我可以通过SSH从外部访问web服务器?

我发现步骤(在VirtualBox主机和客户虚拟机之间设置SSH访问)能够从我的主机SSH到我的客户,但这仍然留给我通过路由器访问它的问题。

我想我可以在我的Windows机器上安装一个SSH服务器,然后隧道几次(虽然我不是100%确定在本地,动态等方面使用什么,或者如何设置多个隧道?),但是有没有一种方法可以让虚拟机直接访问我的路由器,这样我就可以直接端口转发到它?


当前回答

对于Windows主机,您可以:

在virtualbox管理器中: 在virtualbox管理器中选择ctrl+G, 然后进入网络面板 添加专用网络 确保“激活DHCP”未选中 网管(windows) 选择新创建的virtualbox主机专用适配器和物理网卡 右键选择“制作桥” 享受

其他回答

简单地将网络设置设置为桥接就可以了。

当你这样做时,你的IP会改变。然而,在我的情况下,它并没有立即改变。Ifconfig返回相同的ip。我重启了虚拟机,然后砰的一声,ip设置为1,从192开始。*我立即被允许ssh访问。

在安全网络上,将网络设置为网桥可能不起作用。管理员只能允许每个端口有一个mac地址,如果交换机在一个端口上检测到多个mac地址,则阻塞端口。

在我看来,最好的解决方案是设置额外的网络接口来处理您希望在计算机上运行的额外服务。所以我有一个桥接接口,当我把我的笔记本电脑带回家时,我可以从我网络上的其他设备SSH到它,当我想从我的笔记本电脑SSH到我的VM时,当我连接到校园的eduroam wifi网络时,我有一个主机适配器。

使用NAT网卡和添加端口转发。注明实际主机ip。不要使用127.0.0.1或localhost。

VirtualBox文档中有一个关于如何配置NAT端口转发的很好的解释: http://www.virtualbox.org/manual/ch06.html#natforward

登录Linux VirtualBox虚拟机的最佳方式是端口转发。缺省情况下,您应该已经有一个正在使用NAT的接口。然后进入“网络设置”,单击“端口转发”按钮。添加一个新规则。插入“ssh”作为规则名。作为“主机端口”,插入3022。作为“来宾端口”,插入22。规则的其他部分可以留空。

或者从命令行

VBoxManage modifyvm myserver --natpf1 "ssh,tcp,,3022,,22"

其中“myserver”是创建的虚拟机名称。查看已添加的规则:

VBoxManage showvminfo myserver | grep 'Rule'

这是所有!请确保您不要忘记在虚拟机中安装SSH服务器:

sudo apt-get install openssh-server

SSH进入客户虚拟机,如下所示:

ssh -p 3022 user@127.0.0.1

其中user是您在虚拟机中的用户名。