從Linux或Windows電腦,存取遠端Linux的QEMU/KVM虛擬機。
情況描述:你在Linux電腦用 Virt Manager建立了QEMU/KVM虛擬機,而你想要用另一台電腦存取虛擬機桌面,可以怎麼做?
除了用SSH遠端登入,再用virsh指令控制QEMU/KVM虛擬機之外,你也可以透過相容Libvirt API的前端連線到遠端Linux虛擬機,這樣你有圖形列表能一覽虛擬機的運作狀態了。
即使遠端Linux是headless server,照樣可以顯示虛擬機桌面!有安裝Spice Tools還可以讓遠端虛擬機跟本機電腦共享剪貼簿。
1. 安裝相容Libvirt API的前端#
得尋找相容Libvirt API的前端管理器。
如果本機端是Linux,那就用Virt Manager (Virtual Machine Manager,虛擬機器管理器),很多Linux發行版都有收,比如Ubuntu:
sudo apt install virt-manager
需要網頁的解決方案請嘗試 Cockpit,將它部署在遠端Linux伺服器上,就可以透過任意系統的網頁瀏覽器存取了。
2. 將SSH公鑰複製到遠端電腦#
本步驟要執行免密碼登入遠端SSH的操作,因為Virt Manager沒有地方讓你打密碼。
- 登入遠端Linux電腦,安裝OpenSSH伺服器和ssh-keypass套件
sudo apt install openssh-server ssh-askpass
- 啟動SSH服務,並開啟防火牆允許連入
sudo systemctl enable --now sshd
sudo ufw allow ssh
sudo ufw reload
- 回到本機端Linux,安裝SSH服務
sudo apt install openssh-client
- 接著給目前的一般使用者產生SSH公鑰(不使用root的原因是我遠端Linux的使用者有加入Libvirt群組,不需要root也可以操作Libvirt)
ssh-keygen -t rsa
- 然後複製本機的公鑰到遠端電腦,這樣日後就可以免密碼登入
ssh-copy-id -i ~/.ssh/id_rsa.pub 使用者帳號@遠端IP
- 測試SSH連線到遠端Linux,應該不用密碼了。
ssh 使用者帳號@遠端IP
3. 讓Virt Manager連線到遠端#
開啟Virt Manager,點選新增連線
輸入SSH連線資訊。因為剛才已經複製公鑰,故無需密碼即可連線。
然後Virt Manager就會列出遠端的虛擬機列表了。
4. 換用VNC改善遠端桌面延遲#
Virt Manager預設是用SPICE顯示遠端虛擬機的畫面,但延遲高,不適合遠端使用,改用VNC在低網速下表現較好。
如果虛擬機有GPU直通的話,那麼 Moonlight + Sunshine會是更好選擇。
比如,編輯虛擬機的XML(Virt Manager首頁 → 編輯 → 偏好設定→ 啟用XML編輯),移除所有帶有
spice
的區塊然後新增硬體,點選圖形,選取VNC
這樣Virt Manager開機後就會改用VNC顯示畫面。