RDP - VirtualBox 的遠端桌面
筆者在後面的文章會安裝與使用 X2Go 遠端桌面。
然而 VirtualBox 就已有提供遠端桌面的功能了,故筆者於此處追加本文章做說明。
VirtualBox 的遠端桌面使用並相容於 RDP 協定,故對 virtualbox 而言也稱為 VRDP。
筆者之所以選擇 X2Go,(相較於 VNC/據說)是因其反應較快且設定簡單。當然還有很多比 X2Go 更好的/筆者並未詳加考查,用它僅因為裝了用了覺得可以接受便可。
透過遠端連接伺服器是普遍常用的。要不是以 shell 的方式登入呈現,要不就是桌面的形式呈現。RDP server 和 X2Go server 都是同樣的遠端桌面功能,同樣將遠端的桌面呈現到本地端來,只是用的協定不同/實作不同而已。故主機也可安裝 RDP server 達到同樣目的。當然配對的用戶端程式便會不同。RDP server 配 RDP client app,X2Go 配 X2Go client app。
然而,X2Go client 目前還沒有 Android app。
RDP 是有 Android app 可以連線到 RDP 此類型的桌面。請以“rdp client”做搜尋。後面的文章也會再介紹到。
簡單講,
筆者在實體主機上和 VM 內都裝有 X2Go server,以能夠遠端連接此實體主機或此 VM 的桌面;透過 X2Go client,也只有 Linux 版本。
筆者使用 Remmina,也是 Linux 版本,來連接 RDP server,即 VM 自帶的遠端桌面。
筆者也使用 Android app,RDP client,來遠端連接 VM 的桌面。
以下,筆者簡述 VirtualBox RDP server 啟用的步驟。細節請找 virtualbox manual 關於 rdp 的章節。
遠端桌面 - Virtualbox Remote Desktop Protocol
- VRDP 的使用,筆者採取外部認證的方式,且認證資料是儲存在 extradata section 內。並且是使用者自訂帳密,其獨立於本機系統或 VM 客體,所以相對地安全性高。
- 在虛擬機的設定內,遠端顯示的驗證方法,選擇“外部”。
- 自訂密碼的部份要轉為 hash code 再以參數形式傳給 virtualbox 做登錄。
- 所以筆者(照手冊)設使用者名字是 john,密碼是 secret,虛擬機名是 Ubuntu ,那麼就只要以下幾行設定即成。
- 將第三行産生的 hash code 貼到第四行指令最後;如第四行所示。
- 請留意雙引號及 – -vrdeauthtype
- VBoxManage setproperty vrdeauthlibrary “VBoxAuthSimple”
- VBoxManage modifyvm “Ubuntu” –vrdeauthtype external
- VBoxManage internalcommands passwordhash “secret”
- VBoxManage setextradata “Ubuntu” “VBoxAuthSimple/users/john” 2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b
此外,在 linux 系統上 client 端可使用 Remmina,其可從 snap store 安裝。
透過 command line 的方式啟動 VM,“VM-name”要換成您 VM 的名稱:
VBoxManage startvm “VM-name” –type headless(注意雙引號及 – -t)
VM 關機:
VBoxManage controlvm “VM-name” acpipowerbutton(注意雙引號)
使用 VRDP 的注意事項,
- 從 Remmina 連到遠端桌面後,筆者本地端的滑鼠鍵盤無法去做輸入,一直停留在登入的畫面。而事實是鍵鼠都是有作用的,唯有在登入畫面無法顯示出其在作用。所以,若使用者也遇到同樣的狀況,請以盲輸入,即在登入畫面下,按 ENTER 接著輸入密碼,(或者您在登入畫面中會做了哪些動作),在密碼通過後,自然就會回復正常了。
- 筆者關於 Remmina 連線到 VM VRDP 又搞了快兩天。若連不上,有幾種可能(VirtualBox 的問題):
- 以 netstat -tulpn 查看監聽的 port,如果發現 VRDP 所使用的埠,例如 5902,其 5902/tcp 和 5902/tcp6 應當都被其監聽使用,但卻只有其中之一有。那麼表示 VirtualBox 提供的 VRDP 外掛和 VNC 外掛同時在作用,即衝突了。可能可以解決的方式就是下以下 command:
- VBoxManage setproperty vrdeextpack “Oracle VM VirtualBox Extension Pack”(注意雙引號)
- 又或是,可在 virtualbox 設定內,找一下,將 VNC 附加元件移除;它是安裝 extension pack 時裝入的。
- 在 windows 底下(客端/VM)曾安裝的 VirtualBox 附加套件版本不合,對策就是重新安裝。
- 再對 Remmina 補充一下,
它也支援 copy/paste,不過要記得 virtualbox 的 copy/paste 的支援要打開才行。
再來前面有提到使用 snap 提供的 remmina,不過當前筆者的嘗試 apt 所提供者並不比 snap 舊多少,並且完整度/即不會用起來怪怪的,較優於 snap 者。
- 此時,您不免柯柯了一下;
- 在遠端真實主機上,我們可使用 SSH 及 X2Go 登入及使用其圖形界面。又進一步地我們可以在該主機上裝了 virtualbox,並裝了例如 windows 的虛擬機,並透過 ssh command line 將其啟動,並且本地端又開啟了 Remmina 來操作遠端的 windows VM。全部都是在我們本地端的這一台破破的筆電上即可完成。
- 所以,您看您這幾十年來一直都是使用 MS Windows,此時有沒有深覺您被解放了,自由了!
- 參考資料
- Virtualbox 遠端桌面 https://www.virtualbox.org/manual/ch07.html
補充
- 筆者遇到了這樣一種狀況,
- 啟動了一份全新的 vm client,例如啟動跑了 ubuntu20.04 的安裝,進入安裝畫面後,螢幕解析度預設是 800×600,導致該有的完整畫面的下半部被截掉而無法操作(當然,無從調整更改)。幸而我們可以技巧地一開始先進入“try ubuntu without installing“,調整好解析度後(該視窗不要關),才啟動安裝。且安裝過程中又會跳回 800×600,同理就再設定一次。便可解決掉此問題。然而,這是在“系統能有載入”的前提下才有此法可用。
- https://askubuntu.com/questions/281509/how-do-i-change-the-screen-resolution-using-ubuntu-command-line
- 因此按照此連結的內容是另一種方法。不過它仍需在 shell and installation procedure 有並存的前提下。
- 還有一說是要在 vm client 下安裝 guest extension pack 才能調整解析度不過,它遇到 installation procedure(因為先發生)便非解法。
- 因此最根本的解法就是在啟動 client 之前,virtualbox 便有地方且能夠設定解析度。此法筆者當前未知。