SSH鏈接使用NAT模式的Virtualbox虛擬機

需求

在Virtualbox中虛擬安裝了Linux服務器,Linux服務器提供Web服務。物理主機沒有鏈接路由器或交換機等設備。現有以下需求:html

  • 在物理主機Windows系統裏經過SSH鏈接Linux服務器。web

  • 可訪問Linux提供的Web服務。服務器

前言

在Windows下使用Virtualbox虛擬出一臺Linux虛擬機,通常狀況下,將Linux虛擬機的網絡方式設置爲橋接模式,這樣Linux虛擬機就至關於獨立與PC並行存在,兩個系統處於同一局域網,能夠相互ping通。可是前提是當前PC鏈接在路由器或者交換機。若是沒有路由器或者交換機等設備使兩個系統處於同一局域網,這兩個系統就沒辦法簡單地ping通了。網絡

既然目前Linux虛擬機不能使用橋接模式,那就設置成NAT模式(網絡地址轉換NAT)了吧。NAT模式即虛擬機的網絡是徹底依賴於物理主機的的網絡。在這種模式下,兩個系統並非處理同一局域網,不能簡單地直接ping通。可是Virtualbox能夠設置在NAT模式下的端口轉發規則,經過設置規則使PC能夠鏈接上Virtualbox裏的虛擬機。ssh

實踐

打開Virtualbox,右擊Linux虛擬機,選擇設置選項。在設備面板中,選擇網絡,網卡1鏈接方式爲網絡地址轉換NAT,點擊高級,顯示高級設置,以下圖:tcp

網絡地址轉換NAT高級設置

點擊端口轉發按鈕打開端口轉發規則列表,能夠添加或刪除規則。spa

規則中一些術語的解釋:.net

  • 主機:物理主機系統。命令行

  • 子系統:Virtualbox虛擬出來的系統。code

  • 主機端口:物理主機系統的端口,將此端口轉發到子系統端口。

  • 子系統端口:虛擬機子系統的端口。

下面以添加SSH鏈接規則爲例。

點擊右邊的綠色加號按鈕,規則列表中就會添加一條規則。更改其名稱爲ssh(這個名稱能夠隨便寫的)。協議選擇TCP主機IP子系統IP留空不用填寫。主機端口填寫2222,也能夠更改成其它端口,只要不與其它端口衝突便可,物理主機SSH鏈接虛擬機時將使用此端口。子系統端口填寫22,由於SSH鏈接默認是使用22端口的,因此這個是不能隨意填寫的,例如最經常使用的像http協議的話默認是80端口,而ftp協議默認是21端口。填寫完畢,點擊肯定按鈕保存設置。

打開Linux虛擬機,安裝SSH服務並開啓,關閉防火牆。在物理主機Windows系統裏就可使用Putty或者SecureCRT等軟件鏈接Linux虛擬機了,SSH地址寫localhost127.0.0.1,端口填寫剛纔在Virtualbox設置端口轉發規則中的主機端口,上例中是使用了2222。若是沒有鏈接成功,請檢查Linux虛擬機是否已經安裝並開啓SSH服務,並要關閉防火牆。

我在Linux虛擬機裏安裝了Apache和VSFTP,設置Virtualbox端口轉發規則以下圖所示。在物理主機Windows中,經過localhost:8008127.0.0.1:8008能夠訪問web網頁,經過localhost:2121127.0.0.1:2121能夠鏈接FTP。

端口轉發規則

命令行

上面說的是直接在圖形化界面設置端口轉發規則的,還有一種是使用命令設置的。

打開CMD,定位到你的 VirtualBox 安裝目錄,例如 「C:\Program Files\Oracle\VirtualBox」。例如個人Linux虛擬機在Virtualbox中的名稱爲Ubuntu,要添加上例中SSH端口轉發規則,則輸入以下命令:

1
VBoxManage modifyvm "Ubuntu" --natpf1 "ssh,tcp,,2222,,22"

此命令解析以下:

1
VBoxManage modifyvm "Linux虛擬機名稱" --natpf1 "規則名稱,協議,主機IP,主機端口,子系統IP,子系統端口"

參考

相關文章
相關標籤/搜索