透過 SSH 遠端連接 Ubuntu VM

透過 SSH 遠端連接 Ubuntu VM

我在網路或 Linux 方面沒有太多經驗,但我正在嘗試從家庭網路外部 ssh 進入 Ubuntu 虛擬機器。 Ubuntu 虛擬機器 (VirtualBox) 運行在 Debian 桌面上。我做了一些研究,發現我必須將連接埠 22 從路由器轉發到虛擬機器。

  • 我將虛擬機器上的網路設定更改為橋接。
  • 我正在將連接埠轉發到虛擬機器。
  • 我檢查了 (http://www.yougetsignal.com/) 將連接埠顯示為開啟。

但當我嘗試連接時它仍然無法工作。 ssh username@ -- 連線被拒絕

我需要在虛擬機器內部執行什麼操作才能允許傳入連線嗎?或轉發任何連接埠?

我做錯了什麼嗎,任何幫助將不勝感激!

答案1

預設情況下,VirtualBox 在“NAT”模式下工作,這意味著它建立一個“虛擬”網路並轉換來自虛擬機的網路訪問,以便對外界來說,它們似乎來自您的實際電腦。

VirtualBox 讓虛擬機器認為它已連接到網絡,但實際上 VirtualBox 正在提供網路服務,包括迷你 DHCP 伺服器。然後,VirtualBox「代表」虛擬機器進行網路訪問,使其看起來就像在您的 PC 上運行的另一個應用程式一樣。

然而,這意味著外界並不真正了解虛擬機,也無法直接存取它。

我認為您所做的連接埠重定向是從家庭路由器到 PC,而不是虛擬機器。您可能缺少 VirtualBox 端的某些配置。如果您已經這樣做了,但您的問題對此不清楚,我們深表歉意。

基本上,您必須更改虛擬機器的網路配置並將其設定為「橋接」。它的作用是,在您的 PC 上建立一個虛擬接口,並使 VM 使用該接口來存取外部世界;任何進入或進入該介面的東西都會透過管道傳輸到虛擬機器。因此,無論您的 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) > 進階 > 連接埠轉發

進階 > 連接埠轉發

相關內容