Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 VNC 伺服器

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 VNC 伺服器
一些用戶租用相對便宜的帶有Windows的VPS來運行遠端桌面服務。 可以在 Linux 上完成相同的操作,而無需在資料中心託管自己的硬體或租用專用伺服器。 有些人需要熟悉的圖形環境來進行測試和開發,或者需要具有廣泛通道的遠端桌面來透過行動裝置進行工作。 使用基於遠端幀緩衝區 (RFB) 協定的虛擬網路運算 (VNC) 系統有多種選擇。 在這篇短文中,我們將告訴您如何在具有任何虛擬機器管理程式的虛擬機器上設定它。

目錄:

選擇 VNC 伺服器
安裝與配置
透過systemd啟動服務
桌面連接

選擇 VNC 伺服器

VNC服務可以內建在虛擬化系統中,Hypervisor將其與類比設備連接起來,不需要額外的配置。 此選項涉及大量開銷,並且並非所有提供者都支援 - 即使在資源密集度較低的實作中,當不是模擬真實的圖形設備,而是將簡化的抽象(幀緩衝區)傳輸到虛擬機時。 有時,VNC 伺服器會與正在運行的 X 伺服器綁定,但這種方法更適合存取實體機,而在虛擬機器上,它會產生許多技術困難。 安裝 VNC 伺服器最簡單的方法是使用內建 X 伺服器。 它不需要實體設備(視訊適配器、鍵盤和滑鼠)或使用虛擬機器管理程式進行模擬,因此適用於任何類型的 VPS。

安裝與配置

我們需要一台預設配置為 Ubuntu Server 18.04 LTS 的虛擬機器。 該發行版的標準儲存庫中有多個 VNC 伺服器: TightVNC的, 老虎VNC, x11vnc 和別的。 我們選擇了 TigerVNC——TightVNC 的當前分支,但開發者不支援它。 設定其他伺服器的方式也類似。 您還需要選擇桌面環境:我們認為最佳選擇是XFCE,因為對運算資源的要求相對較低。 願意的人可以安裝另一個DE或WM:這完全取決於個人喜好,但軟體的選擇直接影響對RAM和運算核心的需求。

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 VNC 伺服器

使用以下命令安裝具有所有相依性的桌面環境:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

接下來需要安裝VNC伺服器:

sudo apt-get install tigervnc-standalone-server tigervnc-common

以超級用戶身份運行它是一個壞主意。 建立使用者和群組:

sudo adduser vnc

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 VNC 伺服器

讓我們將使用者新增至 sudo 群組,以便他可以執行與管理相關的任務。 如果沒有這個需求,可以跳過這一步:

sudo gpasswd -a vnc sudo

下一步是使用 vnc 使用者權限執行 VNC 伺服器,在 ~/.vnc/ 目錄中建立安全密碼和設定檔。 密碼長度可以是 6 到 8 個字元(多餘的字元將被刪除)。 如有必要,也可以設定密碼僅供查看,即無法使用鍵盤和滑鼠。 以vnc用戶執行以下命令:

su - vnc
vncserver -localhost no

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 VNC 伺服器
預設情況下,RFB 協定使用 TCP 連接埠範圍從 5900 到 5906——這就是所謂的。 顯示端口,每個對應一個 X 伺服器螢幕。 在本例中,連接埠與從 :0 到 :6 的螢幕關聯。 我們啟動的 VNC 伺服器實例偵聽連接埠 5901(畫面:1)。 其他實例可以在螢幕為 :2、:3 等的其他連接埠上工作。在進一步配置之前,您需要停止伺服器:

vncserver -kill :1

指令應顯示以下內容:“Killing Xtigervnc process ID 18105... success!”

TigerVNC 啟動時,會執行 ~/.vnc/xstartup 腳本來配置配置設定。 讓我們建立自己的腳本,首先保存現有腳本的備份副本(如果存在):

mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup

XFCE 桌面環境會話由下列 xstartup 腳本啟動:

#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &

VNC 需要使用 xrdb 指令來讀取主目錄中的 .Xresources 檔案。 使用者可以在那裡定義各種圖形桌面設定:字體渲染、終端顏色、遊標主題等。 該腳本必須可執行:

chmod 755 ~/.vnc/xstartup

這樣就完成了 VNC 伺服器設定。 如果使用命令 vncserver -localhost no (作為 vnc 使用者)執行,則可以使用先前指定的密碼進行連接,並看到下圖:

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 VNC 伺服器

透過systemd啟動服務

手動啟動VNC伺服器不適合實戰使用,因此我們將設定一個系統服務。 這些命令以 root 身分執行(我們使用 sudo)。 首先,讓我們為我們的伺服器建立一個新的單元檔案:

sudo nano /etc/systemd/system/[email protected]

名稱中的@符號可讓您傳遞參數來配置服務。 在我們的例子中,它指定了 VNC 顯示連接埠。 單元文件由幾個部分組成:

[Unit]
Description=TigerVNC server
After=syslog.target network.target

[Service]
Type=simple
User=vnc 
Group=vnc 
WorkingDirectory=/home/vnc 
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

然後你需要通知 systemd 新檔案並啟動它:

sudo systemctl daemon-reload
sudo systemctl enable [email protected]

名稱中的數字 1 指定螢幕編號。

停止 VNC 伺服器,將其啟動為服務並檢查狀態:

# от имени пользователя vnc 
vncserver -kill :1

# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1

如果服務正在運行,我們應該得到類似這樣的資訊。

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 VNC 伺服器

桌面連接

我們的配置不使用加密,因此網路資料包可能會被攻擊者攔截。 另外,在VNC伺服器中經常 尋找漏洞,因此您不應打開它們以透過 Internet 進行存取。 為了在本機上安全連接,您需要將流量打包到 SSH 隧道中,然後設定 VNC 用戶端。 在 Windows 上,您可以使用圖形 SSH 用戶端(例如 PuTTY)。 為了安全起見,伺服器上的 TigerVNC 只監聽本地主機,不能從公共網路直接存取:


sudo netstat -ap |more

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 VNC 伺服器
在 Linux、FreeBSD、OS X 和其他類 UNIX 作業系統中,使用 ssh 實用程式從客戶端電腦建立隧道(sshd 必須在 VNC 伺服器上執行):

ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip

-L 選項將遠端連線的連接埠 5901 綁定到本機上的連接埠 5901。 -C 選項啟用壓縮,-N 選項告訴 ssh 不要執行遠端指令。 -l 選項指定遠端登入的登入名稱。

在本機電腦上設定隧道後,您需要啟動 VNC 用戶端並與主機 127.0.0.1:5901 (localhost:5901) 建立連接,使用先前指定的密碼存取 VNC 伺服器。 現在,我們可以透過加密隧道與 VPS 上的 XFCE 圖形桌面環境進行安全通訊。 在螢幕截圖中,top 公用程式正在終端模擬器中運行,以顯示虛擬機器對運算資源的低消耗。 那麼一切都取決於用戶的應用程式。

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 VNC 伺服器
您可以在幾乎任何 VPS 上的 Linux 中安裝和設定 VNC 伺服器。 這不需要使用視訊適配器模擬進行昂貴且資源密集的配置或購買商業軟體授權。 除了我們考慮的系統服務選項之外,還有其他選項:系統啟動時以守護程序模式啟動(透過 /etc/rc.local)或透過 inetd 按需啟動。 後者對於創建多用戶配置很有趣。 Internet Superserver 將啟動 VNC 伺服器並將客戶端連接到它,VNC 伺服器將建立一個新畫面並啟動工作階段。 若要在其中進行身份驗證,您可以使用圖形顯示管理員(例如, LightDM),斷開客戶端連線後,會話將關閉,所有與螢幕相關的程式將終止。

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 VNC 伺服器

來源: www.habr.com

添加評論