10 使用 VNC 的遠端圖形工作階段 #
您可以利用虛擬網路計算 (VNC) 透過圖形桌面存取遠端電腦,並執行遠端圖形應用程式。VNC 獨立於平台,可讓您從任何作業系統存取遠端機器。本章介紹如何使用桌面用戶端 vncviewer 和 Remmina 連接至 VNC 伺服器,以及如何操作 VNC 伺服器。
SUSE Linux Enterprise Server 支援兩種不同類型的 VNC 工作階段:一次性工作階段,只要用戶端 VNC 連接不中斷,該工作階段將一直處於「作用中」;永久工作階段,此工作階段將一直處於「作用中」,除非明確將其終止。
VNC 伺服器可在不同連接埠上同時提供兩種工作階段,但開啟的工作階段不能從一種類型轉換為另一種類型。
10.1 vncviewer
用戶端 #
若要連接到伺服器提供的 VNC 服務,需要使用一個用戶端。SUSE Linux Enterprise Server 中的預設用戶端是 tigervnc
套件提供的 vncviewer
。
10.1.1 使用 vncviewer CLI 進行連接 #
若要啟動 VNC 查看器並發起與伺服器的工作階段,請使用以下指令:
tux >
vncviewer jupiter.example.com:1
您也可以指定含兩個冒號的連接埠號碼,而不指定 VNC 顯示埠號碼:
tux >
vncviewer jupiter.example.com::5901
您在 VNC 用戶端中指定的實際顯示號碼或連接埠號碼必須與在目標機器上透過 vncserver
指令選取的顯示號碼或連接埠號碼相同。如需更多資訊,請參閱第 10.4 節 「設定永久 VNC 伺服器工作階段」。
10.1.2 使用 vncviewer GUI 進行連接 #
執行 vncviewer
且不指定 --listen
或要連接到的主機會顯示一個視窗,要求您輸入連接詳細資料。按第 10.1.1 節 「使用 vncviewer CLI 進行連接」中所述在 欄位中輸入主機,然後按一下 。
10.1.3 未加密連接通知 #
VNC 協定支援不同類型的加密連接,請不要將這些連接與密碼驗證相混淆。如果某個連接未使用 TLS,VNC 檢視器的視窗標題中可能會出現 「(連接未加密!)」 文字。
10.2 Remmina:遠端桌面用戶端 #
Remmina 是功能豐富的新式遠端桌面用戶端。它支援多種存取方法,例如 VNC、SSH、RDP 和 Spice。
10.2.1 安裝 #
若要使用 Remmina,請檢查系統上是否安裝了 remmina 套件,若未安裝,請加以安裝。記得還要安裝適用於 Remmina 的 VNC 外掛程式:
root #
zypper in remmina remmina-plugin-vnc
10.2.2 主視窗 #
透過輸入 remmina
指令執行 Remmina。
該應用程式主視窗顯示儲存的遠端工作階段清單。在這裡,您可以新增和儲存新遠端工作階段、快速啟動新工作階段而不儲存、啟動先前儲存的工作階段,或設定 Remmina 的全域優先設定。
10.2.3 新增遠端工作階段 #
若要新增和儲存新遠端工作階段,請按一下主視窗左上方的 。 視窗即會開啟。
在用於指定剛才新增的遠端工作階段設定檔的欄位中填寫資訊。最重要的技術包括:
- 名稱
設定檔的名稱,將列於主視窗中。
- 通訊協定
連接到遠端工作階段時要使用的通訊協定,例如 VNC。
- 伺服器
遠端伺服器的 IP 或 DNS 位址和顯示號碼。
- 使用者名稱、密碼
將用於進行遠端驗證的身分證明。保留為空白表示不進行驗證。
- 色彩深度、品質
根據連接速度和品質選取最佳選項。
選取
索引標籤可輸入更具體的設定。如果用戶端與遠端伺服器之間的通訊不加密,請啟用
,否則連接會失敗。選取
索引標籤可顯示進階 SSH 通道和驗證選項。請按
加以確認。新的設定檔將列在主視窗中。10.2.4 啟動遠端工作階段 #
您可以啟動先前儲存的工作階段,也可以快速啟動一個遠端工作階段而不儲存連接詳細資料。
10.2.4.1 快速啟動遠端工作階段 #
若要快速啟動遠端工作階段而不新增和儲存連接詳細資料,請使用主視窗頂部的下拉式方塊和文字方塊。
從下拉式方塊中選取通訊協定 (例如「VNC」),然後輸入 VNC 伺服器 DNS 或 IP 位址,後跟一個冒號和顯示號碼,然後按 Enter 確認。
10.2.4.2 開啟儲存的遠端工作階段 #
若要開啟特定的遠端工作階段,請從工作階段清單中連按兩下該工作階段。
10.2.4.3 遠端工作階段視窗 #
遠端工作階段會在新視窗的索引標籤中開啟。每個索引標籤代管一個工作階段。視窗左側的工具列可協助您管理視窗/工作階段,例如切換全螢幕模式、調整視窗大小以適應工作階段的顯示大小、將特定按鍵動作傳送到工作階段、擷取工作階段的螢幕畫面,或設定影像品質。
10.2.5 編輯、複製和刪除儲存的工作階段 #
若要編輯儲存的某個遠端工作階段,請在 Remmina 主視窗中以滑鼠右鍵按一下該工作階段的名稱,然後選取 。如需相關欄位的描述,請參閱第 10.2.3 節 「新增遠端工作階段」。
若要複製儲存的某個遠端工作階段,請在 Remmina 主視窗中以滑鼠右鍵按一下該工作階段的名稱,然後選取 。在 視窗中,變更設定檔的名稱,(選擇性) 調整相關選項,然後按一下 確認。
若要刪除儲存的某個遠端工作階段,請在 Remmina 主視窗中以滑鼠右鍵按一下該工作階段的名稱,然後選取 。在下一個對話方塊中,按一下 確認。
10.2.6 從指令行執行遠端工作階段 #
如果您需要從指令行或使用批次檔案開啟遠端工作階段,而不先開啟應用程式主視窗,請使用以下語法:
tux >
remmina -c profile_name.remmina
Remmina 的設定檔儲存在您主目錄下的 .local/share/remmina/
目錄中。若要確定哪個設定檔屬於您要開啟的工作階段,請執行 Remmina,在主視窗中按一下工作階段名稱,然後在視窗底部的狀態行中查看設定檔的路徑。
如果 Remmina 未在執行,您可以將設定檔重新命名為更合理的檔案名稱,例如 sle15.remmina
。您甚至可以將設定檔複製到自訂目錄,並從該目錄中使用 remmina -c
指令來執行它。
10.3 在 VNC 伺服器上設定一次性工作階段 #
一次性工作階段由遠端用戶端啟動。它會在伺服器上啟動圖形登入畫面。這樣,您就可以選擇啟動工作階段的使用者,如果登入管理員支援,還可以選擇桌面環境。終止此類 VNC 工作階段的用戶端連接時,在該工作階段內啟動的所有應用程式也會隨之終止。一次性 VNC 工作階段無法共用,不過在同一台主機上可以同時啟動多個工作階段。
啟動
› › 。核取
。如果您打算在網頁瀏覽器視窗中存取 VNC 工作階段,請啟用
。若需要,還可核取
(例如,當網路介面設定為位於外部區域中時)。如果您有多個網路介面,請透過 設定在特定介面開啟防火牆埠的限制。以
確認您的設定值。如果有些需要的套件尚未提供,您需要批准安裝缺失套件。
提示:重新啟動顯示管理員YaST 對顯示管理員設定進行了變更。您需要登出目前的圖形工作階段並重新啟動顯示管理員,以使變更生效。
10.3.1 可用的組態 #
SUSE Linux Enterprise Server 上的預設組態以 16 位元色彩深度、1024x768 像素解析度顯示工作階段。使用「一般」的 VNC 檢視器 (相當於 VNC 顯示埠 1
) 時,可在連接埠 5901
上檢視工作階段,而使用網頁瀏覽器時,則可在連接埠 5801
上檢視工作階段。
其他組態可在不同的連接埠上使用,請參閱第 10.3.3 節 「設定一次性 VNC 工作階段」。
在一次性工作階段中,VNC 顯示埠號碼和 X 顯示埠號碼是獨立的。VNC 顯示埠號碼需要手動指定給伺服器支援的每個組態 (在上例中為 :1)。每次以其中一種組態啟動 VNC 工作階段時,工作階段會自動獲得可用的 X 顯示埠號碼。
依預設,VNC 用戶端與伺服器會嘗試透過安裝後產生的自行簽署 SSL 證書安全通訊。您可以使用預設的證書,也可以用自己的證書取代它。使用自行簽署的證書時,需要在首次連接之前,於 VNC 檢視器與網頁瀏覽器中確認證書的簽名。
10.3.2 啟動一次性 VNC 工作階段 #
若要連接一次性 VNC 工作階段,必須安裝 VNC 檢視器,另請參閱第 10.1 節 「vncviewer
用戶端」。或者,可在支援 JavaScript 的網頁瀏覽器中輸入以下 URL 來檢視 VNC 工作階段:http://jupiter.example.com:5801
10.3.3 設定一次性 VNC 工作階段 #
如果您不需要或不想修改預設組態,可以跳過本小節。
一次性 VNC 工作階段透過 systemd
通訊端 xvnc.socket
啟動。該通訊端預設提供六個組態區塊:三個用於 VNC 檢視器 (vnc1
到 vnc3
),另外三個用於 JavaScript 用戶端 (vnchttpd1
到 vnchttpd3
)。預設只有 vnc1
及 vnchttpd1
處於作用中狀態。
若要在開機時啟動 VNC 伺服器通訊端,請執行以下指令:
tux >
sudo
systemctl enable xvnc.socket
若要立即啟動通訊端,請執行:
tux >
sudo
systemctl start xvnc.socket
可透過 server_args
選項設定 Xvnc
伺服器。如需選項清單,請參閱 Xvnc --help
。
新增自訂組態時,請確定它們沒有使用同一台主機上的其他組態、服務或現有的永久 VNC 工作階段已在使用的連接埠。
輸入以下指令啟用組態變更:
tux >
sudo
systemctl reload xvnc.socket
依照程序 10.1 「啟用一次性 VNC 工作階段」 中所述啟用遠端管理時,會在防火牆中開啟連接埠 5801
及 5901
。如果提供 VNC 工作階段的網路介面受防火牆保護,則您在為 VNC 工作階段啟用其他連接埠時,需要手動開啟相應的連接埠。如需指示,請參閱Chapter 23, Masquerading and firewalls。
10.4 設定永久 VNC 伺服器工作階段 #
從多個用戶端可以同時存取一個永久工作階段。此特性非常適合用於在一個用戶端具有完整存取權,而所有其他用戶端具有僅檢視存取權的場合進行演示操作。另一個使用案例是:訓練員可能需要在其中存取學員桌面的訓練工作階段。
若要連接至永久 VNC 工作階段,必須安裝 VNC 檢視器。如需更多詳細資料,請參閱第 10.1 節 「vncviewer
用戶端」。或者,可在支援 JavaScript 的網頁瀏覽器中輸入以下 URL 來檢視 VNC 工作階段:http://jupiter.example.com:5801
持續 VNC 工作階段分為以下兩類:
10.4.1 使用 vncserver
啟動的 VNC 工作階段 #
此類型的持續 VNC 工作階段在伺服器上啟動。不論用戶端的連接狀態為何,此工作階段以及在此工作階段中啟動的所有應用程式會一直執行,直至工作階段被終止。對永久工作階段的存取受到密碼保護,密碼可能為以下兩種類型:
授予完全存取權的一般密碼,或
授予非互動式 (僅檢視) 存取權限的選擇性僅檢視密碼。
一個工作階段可以同時擁有這兩種類型的多個用戶端連接。
vncserver
啟動永久 VNC 工作階段 #開啟外圍程序,並確定您以應當擁有 VNC 工作階段的使用者身分登入。
如果提供 VNC 工作階段的網路介面受防火牆保護,則您需要在防火牆中手動開啟工作階段使用的連接埠。如果要啟動多個工作階段,可以開啟一系列連接埠。如需如何設定防火牆的詳細資料,請參閱Chapter 23, Masquerading and firewalls。
vncserver
對顯示埠:1
使用連接埠5901
,對顯示埠:2
使用連接埠5902
,依此類推。對於永久工作階段,VNC 顯示埠和 X 顯示埠的號碼通常都是相同的。若要以 1024x768 像素的解析度及 16 位元的色彩深度啟動工作階段,請輸入以下指令:
vncserver -alwaysshared -geometry 1024x768 -depth 16
vncserver
指令在未指定顯示埠號碼的情況下,會挑選未使用的號碼,並列印它的選擇。有關更多選項的資訊,請參閱man 1 vncserver
。
首次執行 vncserver
時,它會要求您輸入擁有工作階段完整存取權限的密碼。如果需要,您也可以提供對工作階段具有僅檢視存取權限的密碼。
此處提供的密碼還可供同一個使用者用來啟動以後的工作階段。使用 vncpasswd
指令可以變更這些密碼。
請務必使用足夠長 (8 個或更多字元) 的嚴密密碼。請不要共用這些密碼。
若要終止工作階段,請從 VNC 檢視器關閉在 VNC 工作階段內部執行的桌面環境,就如同關閉一般本地 X 工作階段一樣。
如果您想要手動終止工作階段,請在 VNC 伺服器上開啟一個外圍程序,並務必以擁有您要終止之 VNC 工作階段的使用者身分登入。執行以下指令以終止在顯示埠 :1
上執行的工作階段:vncserver -kill :1
10.4.1.1 設定永久 VNC 工作階段 #
永久 VNC 工作階段可透過編輯 $HOME/.vnc/xstartup
來設定。依預設,此外圍程序程序檔會啟動它啟動時所處的同一個 GUI/視窗管理員。在 SUSE Linux Enterprise Server 中,此 GUI/視窗管理員為 GNOME 或 IceWM。如果想要使用您選擇的視窗管理員啟動工作階段,請設定變數 WINDOWMANAGER
:
WINDOWMANAGER=gnome vncserver -geometry 1024x768 WINDOWMANAGER=icewm vncserver -geometry 1024x768
永久 VNC 工作階段透過單個基於使用者的組態設定。由同一個使用者啟動的多個工作階段皆使用相同的啟動檔案和密碼檔案。
10.4.2 使用 vncmanager
啟動的 VNC 工作階段 #
啟動「
› › 」。啟用
。如果您打算在網頁瀏覽器視窗中存取 VNC 工作階段,請啟用
。若需要,還可核取
(例如,當網路介面設定為位於外部區域中時)。如果您有多個網路介面,請透過 設定在特定介面開啟防火牆埠的限制。以
確認您的設定值。如果有些需要的套件尚未提供,您需要批准安裝缺失套件。
提示:重新啟動顯示管理員YaST 對顯示管理員設定進行了變更。您需要登出目前的圖形工作階段並重新啟動顯示管理員,以使變更生效。
10.4.2.1 設定永久 VNC 工作階段 #
依程序 10.3 「啟用永久 VNC 工作階段」中所述啟用 VNC 工作階段管理後,便可以使用您喜歡的 VNC 檢視器 (例如 vncviewer
或 Remmina) 正常連接到遠端工作階段。此時將顯示登入畫面。當您登入後,桌面環境的系統匣中將出現「VNC」圖示。按一下該圖示可開啟 視窗。如果該圖示未出現,或者您的桌面環境不支援將圖示放在系統匣中,請手動執行 vncmanager-controller
。
有幾項設定會影響 VNC 工作階段的行為:
這相當於一次性工作階段。其他使用者將看不見此工作階段,它在您斷開連接後即會終止。如需相關資訊,請參閱第 10.3 節 「在 VNC 伺服器上設定一次性工作階段」。
其他使用者可以看見工作階段,它在您斷開連接後仍繼續執行。
您可以在此處指定持續工作階段的名稱,以便在重新連接時可以輕鬆識別它。
任何人不必提供使用者身分證明登入即可存取工作階段。
需要使用有效的使用者名稱和密碼登入後,才能存取工作階段。該選項會在
文字方塊中列出有效的使用者名稱。防止多個使用者同時加入該工作階段。
允許多個使用者同時加入持續工作階段。適合用於遠端展示或訓練工作階段。
按一下
加以確認。10.4.2.2 加入永久 VNC 工作階段 #
依第 10.4.2.1 節 「設定永久 VNC 工作階段」中所述設定持續 VNC 工作階段後,可透過 VNC 檢視器加入它。當 VNC 用戶端連接到伺服器後,系統將提示您選擇是要建立新工作階段,還是加入現有工作階段:
當您按一下現有工作階段的名稱後,系統可能要求您輸入登入身分證明,具體取決於持續工作階段設定。
10.5 在 VNC 伺服器上設定加密 #
如果 VNC 伺服器設定正確,則 VNC 伺服器與用戶端之間的所有通訊都會加密。驗證在工作階段開始時進行,實際的資料傳輸在驗證後開始。
無論是一次性還是持續 VNC 工作階段,都可透過 server_args
行中 /usr/bin/Xvnc
指令的 -securitytypes
參數設定安全性選項。-securitytypes
參數會選取驗證方法和加密。它的選項如下:
- None、TLSNone、X509None
沒有驗證。
- VncAuth、TLSVnc、X509Vnc
驗證使用自訂密碼。
- Plain、TLSPlain、X509Plain
驗證使用 PAM 來驗證使用者的密碼。
- None、vncAuth、plain
不加密。
- TLSNone、TLSVnc、TLSPlain
匿名 TLS 加密。所有內容都會加密,但不驗證遠端主機。因此,您可以防護被動攻擊者,但不能防禦中間人攻擊者。
- X509None、X509Vnc、X509Plain
使用證書進行 TLS 加密。如果使用自行簽署的證書,則在第一次連接時,系統將要求您驗證證書。在以後的連接中,僅當證書有變更時,系統才會向您發出警告。因此,在第一次連接時,您可以防禦中間人攻擊之外的所有其他攻擊 (類似於使用一般的 SSH)。如果使用由證書管理中心簽署且與機器名稱相符的證書,您的安全將得到全面保障 (類似於使用一般的 HTTPS)。
提示:證書和金鑰的路徑如果您使用基於 X509 的加密,需要透過
-X509Cert
和-X509Key
選項指定 X509 證書和金鑰的路徑。
如果您選取多種安全性類型 (以逗號分隔),將會使用用戶端與伺服器都支援且允許的第一種安全性。如此,您便可在伺服器上設定隨機加密。如果您需要支援不支援加密的 VNC 用戶端,此功能將相當實用。
在用戶端上,您也可以指定允許的安全性類型,以防在您連接到已知啟用了加密的伺服器時遭到降級攻擊 (雖然在該情況下,我們的 vncviewer 會發出「連接未加密!」訊息來警告您)。