如何通过主机从外部连接到VirtualBox客户机的SSH?

661

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

我找到了步骤(在VirtualBox主机和客户机之间设置SSH访问),能够从我的主机ssh到我的客户机,但仍然存在通过我的路由器访问的问题。

我想我可以在我的Windows机器上安装一个SSH服务器,然后进行多次隧道(虽然我不确定要使用本地、动态等哪些选项,或者如何设置多个隧道?),但有没有办法使虚拟机直接可访问我的路由器,以便我可以直接端口转发到它上面?


3
使用Vagrant可以更轻松地完成这个任务,它可以通过配置文件或GUI创建可用于SSH访问和IP访问的虚拟机。我不知道你的具体情况,但我已经撰写了一篇[如何使用Vagrant创建可用于SSH访问的Ubuntu服务器虚拟机](http://www.dev-metal.com/setup-virtual-machine-multiple-vagrant-puphpet/)的大型教程,当你想要设置一个基于LAMP的开发环境时非常有用。 - Sliq
1
Vagrant是一个很棒的工具,但它不兼容较新版本的VirtualBox。 - LizH
3
最佳答案在下方: https://dev59.com/Wm025IYBdhLWcg3wnXSf#10410527该答案解释了如何使用Java编写一个基本的TCP客户端程序,并与服务器进行通信。它包括通过套接字建立连接,发送和接收数据以及关闭连接等步骤。如果您正在寻找有关此主题的信息,这是一篇非常有用的文章。 - Michael
您可以查看此教程http://wiki.workassis.com/virtualbox-ssh-between-host-and-guest/。 - Bikesh M
认为建立一个新的、专门的讨论虚拟化的地方可能会很有用。请参考以下链接:https://area51.meta.stackexchange.com/questions/28201/proposal-for-a-site-about-virtualization - realtebo
15个回答

2

2

Ubuntu 18.04 LTS

为了能够在不进行“端口转发”的情况下查看服务器IP并连接,需要进行桥接配置。

在VirtualBox中,右键单击服务器,选择“设置”->“网络”,启用第二个适配器,并选择“桥接”模式。在“混杂模式”中选择“允许全部”,检查已连接的电缆,然后启动服务器。

在Ubuntu服务器上,编辑sudo nano /etc/netplan/*init.yaml文件。

示例文件:

network:
    ethernets:
        enp0s3:
            addresses: []
            dhcp4: true
        enp0s8:
            addresses: [192.168.0.200/24]
            dhcp4: no
            dhcp6: no
            nameservers:
               addresses: [8.8.8.8, 8.8.4.4]
    version: 2

有用的命令

nano /etc/netplan/file.yaml     # file to specify the rules of network
reboot now                      # restart ubuntu server right now
netplan apply                   # do after edited *.yaml, to apply changes
ifconfig -a                     # show interfaces with ip, netmask, broadcast, etc...
ping google.com                 # to see if there is internet

使用NetPlan在Ubuntu 18.04 LTS服务器上配置静态IP地址


1

对于我来说,将网络设置简单地设置为桥接就解决了问题。

这样做会改变您的IP地址。但是,在我的情况下,它并没有立即改变。 ifconfig 返回相同的IP地址。我重新启动了虚拟机,然后,IP地址设置为以192.*开头,并且我立即被允许使用ssh访问。


我猜这些信息在某种普遍意义上部分或完全不准确,但我不确定。踩负评者也没说明。 - boulder_ruby
换句话说,“对于某些人,它不起作用。” - boulder_ruby

0

使用NAT网络适配器并添加端口转发。请提供实际主机IP,不要使用127.0.0.1或localhost。


0
在安全网络上,将您的网络设置为桥接可能无法正常工作。管理员可能只允许每个端口一个MAC地址,甚至更糟的是,如果交换机检测到一个端口上有多个MAC地址,则会阻止该端口。
我认为最好的解决方案是设置额外的网络接口来处理您想在计算机上运行的其他服务。因此,当我带着笔记本电脑回家并可以从我的网络上的其他设备上进行SSH时,我有一个桥接接口,以及当我连接到校园上的eduroam wifi网络时,我想从我的笔记本电脑上进行VM SSH时,我有一个仅主机适配器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接