通过 SSH 远程登录 Ubuntu VM

通过 SSH 远程登录 Ubuntu VM

我对网络或 Linux 没什么经验,但我正尝试从家庭网络外部通过 ssh 进入 Ubuntu 虚拟机。Ubuntu 虚拟机 (VirtualBox) 在 Debian 桌面上运行。我做了一些研究,发现我必须将端口 22 从路由器转发到虚拟机。

  • 我将虚拟机上的网络设置更改为桥接。
  • 我正在将端口转发至虚拟机。
  • 我检查了 (http://www.yougetsignal.com/)显示端口为开放。

但是当我尝试连接时它仍然不起作用。ssh 用户名@--连接被拒绝

我需要在虚拟机中执行什么操作才能允许传入连接?或者转发任何端口?

我做错了什么吗?任何帮助都将不胜感激!!

答案1

默认情况下,VirtualBox 以“NAT”模式工作,这意味着它会构建一个“虚拟”网络并转换来自 VM 的网络访问,以便对于外界来说,它们似乎来自您的实际计算机。

VirtualBox 让虚拟机认为它已连接到网络,但实际上 VirtualBox 提供的是网络服务,包括一个小型 DHCP 服务器。然后,VirtualBox“代表”虚拟机进行网络访问,使其看起来像是 PC 上运行的另一个应用程序。

然而这意味着外界实际上并不了解虚拟机并且无法直接访问它。

我认为您执行的端口重定向是从家用路由器到 PC,而不是到 VM。您可能缺少 VirtualBox 方面的某些配置。如果您已经执行了此操作,请原谅,但您的问题对此并不清楚。

基本上,您必须更改虚拟机的网络配置并将其设置为“桥接”。这样做的目的是,它会在您的 PC 上创建一个虚拟接口,并让虚拟机使用该接口访问外部世界;任何进入或前往该接口的信息都会被传输到虚拟机。因此,无论您的 PC 连接到哪个网络,虚拟机都将被视为另一台机器(它甚至有自己的 MAC 地址!)。

然后,根据您的网络配置,虚拟机可能会像连接到路由器的任何其他 PC 一样获得 DHCP 地址,或者您可能需要为其配置静态 IP 地址。这取决于您的网络设置方式。

一旦虚拟机有了“真实”地址,您就可以在路由器上按照找到的说明将端口 22 路由到虚拟机的 IP 地址。这应该会按预期工作。

如果没有的话:

  • 查看虚拟机的防火墙配置 (iptables -L -n)。它是否阻止了任何东西?
  • 在本地网络上设置另一台计算机,并尝试通过 SSH 连接到虚拟机的 IP 地址。如果可以,则需要仔细检查路由器中的转发配置。如果不能,则需要重新检查虚拟机的 SSH 和防火墙配置。

答案2

据我所知,您的问题出在您的服务器计算机网络上,因为一旦您将虚拟机网络设置为桥接模式,您就可以开始了(ssh <your.vm.ip.number>在您的服务器命令行上检查 - 而不是在虚拟机中)。

您的服务器位于路由器后面,就像机器中使用 NAT 的虚拟机一样。

您需要联系您的服务器网络管理员,以便他/她可以将您的虚拟机的本地 IP 地址转发到一个端口/端口范围(确保您的虚拟机具有静态 IP 地址)。

如果您拥有服务器网关的权限,您可以自己执行此操作。

可视化一下:

Internet
     '---ROUTER (SERVER1 and SERVER2 use NAT on this router)
            |   (vm1, vm2, vm3, vm4, vm5 need to be forwarded on this router)
            | 
            '--- SERVER1 (vm1, vm2, vm3 use Bridge)
            |       '---vm1
            |       '---vm2
            |       '---vm3
            '--- SERVER1 (vm4, vm5 use Bridge)
            |       '---vm4
            |       '---vm5

答案3

从你的情况来看,似乎你需要为你的虚拟机配置防火墙 $ sudo ufw allow ssh

答案4

也可以在“NAT模式”下执行此操作,发现Oracle VM Virtualbox具有端口转发功能,

转到 Virtualbox 设置 > 网络 > 适配器 (NAT) > 高级 > 端口转发

高级 > 端口转发

相关内容