提問: 我有一台運行在VirtualBox上的使用NAT的虛擬機,因此虛擬機會被VirtualBox分配一個私有IP地址(10.x.x.x)。如果我想要從主機SSH到虛擬機中,我該怎麼做?
VirtualBox對虛擬機支持幾種不同的網絡方式,其中一種是NAT網絡。當虛擬機啟用NAT後,VirtualBox會自動在虛擬機和主機之間進行網絡翻譯,因此你不必在虛擬機和主機之間配置任何東西。這也意味著NAT中的虛擬機對於外部網絡以及主機本身是不可見的。這會在你想要從主機訪問虛擬機時會產生問題(比如SSH)。
如果你想從VirtualBox的NAT環境的虛擬機,你可以在GUI或者命令行下啟用VirtualBox NAT的端口轉發。本篇教程將會演示如何通過啟用22端口轉發而從主機SSH連接到NAT環境的客戶機。如果你先想要從HTTP訪問NAT的客戶機,用80端口代替22端口即可。
在VirtualBox中選擇你想要訪問的虛擬機,打開虛擬機的“設置”。點擊左側的“網絡”菜單,點擊網絡適配選項的“高級”。
點擊“端口轉發”按鈕
你會看到一個配置端口轉發規則的窗口。點擊右上角的“添加”圖標。
就會看到像下面那樣的轉發規則。
端口轉發的規則會自動在你啟動虛擬機的時候啟用。為了驗證。可以在你啟用虛擬機後檢查端口2222是否被VirtualBox開啟了。
現在端口轉發可以使用了,你可以用下面的命令SSH到虛擬機。
發送到127.0.0.1:2222的登錄請求會自動被VirtualBox翻譯成10.0.2.15:22,這可以讓你SSH到虛擬機中。
VirtualBox有一個稱為VBoxManage的命令行管理工具。使用命令行工具,你也可以為你的虛擬機設置端口轉發。
下面的命令會為IP地址為10.0.2.15的虛擬機設置一個名字為"CentOS7"的端口轉發規則,SSH的端口號為22,映射到本地主機的端口為2222。規則的名字(本例中是SSH)必須是唯一的。
規則創建之後,你可以用下面的命令來驗證。