从主机访问 VirtualBox 本地主机

从主机访问 VirtualBox 本地主机

我正在通过 VirtualBox 中的 Ubuntu 虚拟机连接到服务器ssh -L 8000:localhost:8000 <hostname>。在虚拟机中,我可以通过“localhost:8000”访问服务器,但无法从 IP 地址“192.168.11.175:8000”(我有一个桥接适配器)访问。我无法通过 localhost 或 IP 访问主机操作系统(Windows 10)中的服务器。我如何从主机访问虚拟机 localhost?

运行ifconfig的结果:

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.11.175  netmask 255.255.255.0  broadcast 192.168.11.255
    inet6 fe80::61a3:b162:4e6e:4731  prefixlen 64  scopeid 0x20<link>
    ether 08:00:27:30:85:c2  txqueuelen 1000  (Ethernet)
    RX packets 4097  bytes 3519328 (3.5 MB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 3347  bytes 551359 (551.3 KB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    inet6 ::1  prefixlen 128  scopeid 0x10<host>
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 2179  bytes 1877351 (1.8 MB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 2179  bytes 1877351 (1.8 MB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

虚拟机信息

答案1

实现此目的的方法之一是ssh从“主机”(您的 Windows 10 机器)进入您的 Ubuntu VM,使用-L(用于本地端口转发)。

ssh您出于某种原因选择 Windows 作为主机,因此没有像 macOS、Linux 等那样的内置命令。

所以我假设您可能正在使用像 PuTTY 这样的工具?

您可以使用 PuTTY 的配置对话框设置本地端口转发 - 查找更多信息,例如这里

将端口 8000 从 Windows 主机转发到 Ubuntu VM 后,它将通过您提到的命令进一步转发ssh -L ...到远程服务器。

答案2

ssh -L 8000:localhost:8000 <hostname>意思是相同的ssh -L localhost:8000:localhost:8000 <hostname>

长话短说,第一个localhost:8000在客户端(在您的情况下是 Win 10),第二个在服务器端。

标志-L表示在客户端打开端口。因此,在成功建立连接后,您需要做的就是继续http://本地主机:8000在 Windows 10 主机上

更新:

如果您想使用,192.168.11.175:8000请首先检查您的服务器是否绑定到该地址或0.0.0.0:8000

如果它监听localhost:8000127.0.0.1:8000,那么就无法通过网络连接。

您可以使用以下命令检查所有绑定的 TCP 端口:

sudo netstat -46lnp

此处的标志p(需要 sudo)启用带有程序名称的列。

相关内容