本文簡單介紹如何透過 SSH 連接到 VirtualBox 中的 Ubuntu Server,以便進行日常開發工作。
準備工作
- 已安裝好的 VirtualBox 軟體
- 已建立好的 Ubuntu Server 24.04 LTS 虛擬機
1. 虛擬機中安裝 SSH 服務
# 更新軟體源
sudo apt update && sudo apt upgrade
# 安裝 SSH 服務
sudo apt install openssh-server
# 驗證 SSH 服務是否安裝成功
sudo systemctl status ssh

2. 配置 VirtualBox 網路
預設情況下,VirtualBox 會為您的虛擬機建立網路位址轉譯 (NAT) 介面卡。這允許虛擬機存取網際網路,但會阻止其他裝置透過 SSH 存取它。
在虛擬機啟動的時候,我們可以透過 ip -4 addr 指令查看虛擬機的 IP 位址,我們可以看到虛擬機的 IP 位址為 10.0.2.16,請記錄下來,後面會用到。

然後將虛擬機的電源關閉,開始配置虛擬機的網路。
- 在要設定的虛擬機上按右鍵,點擊設定 (Settings) 齒輪圖示開啟設定視窗。
- 點擊網路 (Network) 標籤,預設選擇第一個介面卡 (Adapter 1)。
- 接下來點擊進階 (Advanced) 選項展開進階設定,點擊連接埠轉發 (Port Forwarding) 開啟設定視窗。

Network Setting

Port Forwarding
- 點擊右邊綠色的新增 (Add) 按鈕,新增一條連接埠轉發規則。
- 在彈出的視窗中,設定如下參數:
- 名稱:SSH
- 協定:TCP
- 主機 IP:127.0.0.1
- 主機連接埠:12022
- 虛擬機 IP:10.0.2.15
- 虛擬機連接埠:22
- 點擊確定 (OK) 按鈕,完成連接埠轉發規則的新增。
3. 透過 SSH 連接
在本地終端機中,透過 ssh 指令連接到虛擬機。
ssh -p 12022 username@127.0.0.1
# username 為虛擬機的登入使用者名稱
# 輸入密碼
(invisible)
# 連接成功
Welcome to Ubuntu 24.04 LTS (GNU/Linux 5.4.0-137-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information disabled due to load higher than 1.0
0 updates can be applied immediately.
Last login: Tue Jan 17 23:30:22 2023 from 10.0.2.2
4. 配置 SSH 免密碼登入
在本地終端機中,透過 ssh-keygen 指令產生 SSH 金鑰對。
ssh-keygen -t rsa -b 4096 -C "awsuser@myserver"
# 輸入檔案名稱
mykey
# 輸入密碼
(invisible)
# 再次輸入密碼
(invisible)
記得將 awsuser@myserver 替換成你自己的電子郵件地址。
記得修改檔案名稱,否則會覆蓋掉原本的金鑰對。
在本地終端機中,透過 ssh-copy-id 指令將公鑰複製到虛擬機中。
ssh-copy-id -i ~/.ssh/mykey -p 12022 user@127.0.0.1
# 輸入密碼
(invisible)
在本地終端機中,透過 ssh 指令連接到虛擬機。
ssh -p 12022 username@127.0.0.1
# 已經不需要輸入密碼了
Welcome to Ubuntu 24.04 LTS (GNU/Linux 5.4.0-137-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information disabled due to load higher than 1.0
0 updates can be applied immediately.
Last login: Tue Jan 17 23:30:22 2023 from 10.0.2.2
5. 停用 SSH 密碼登入
在虛擬機中,透過 sudo 指令修改 SSH 設定檔。
sudo vim /etc/ssh/sshd_config
# 修改 PasswordAuthentication 參數
PasswordAuthentication no
# ESC 退出編輯模式,輸入 :wq 儲存並退出。
# 重新啟動 SSH 服務。
sudo systemctl restart sshd