VNC 代表虛擬網絡計算。 它可以幫助您遠程控制您的 Ubuntu 機器。 VNC 服務器使用遠程幀緩衝協議 (RFB) 來遠程控制另一台計算機。
當技術支持人員使用鍵盤或鼠標時,VNC 會將來自鍵盤和鼠標的信號傳輸到遠程服務器。 它通過圖形用戶界面使管理工作更加輕鬆方便。 此外,VNC 比圖形 SSH 和 RDP 連接更可靠。
本教程將介紹使用 TightVNC 在 Ubuntu 20.04 上設置和配置 VNC 的步驟。 如果您在以前版本的 Ubuntu 16.04 上運行 VNC,有一個指南。
安裝桌面環境和 VNC 服務器
首先,讓我們在你的 Ubuntu 服務器上安裝一個桌面環境,因為它默認沒有安裝。 有很多選擇:GNOME、MATE、XFCE等等。
在本教程中,我們將選擇 XFCE。 它是一個輕量級的桌面環境,它有助於 VNC 連接穩定流暢。
在您的 Ubuntu 服務器上,運行以下命令來更新軟件包列表:
$ sudo apt update
然後,讓我們安裝 XFCE 桌面環境:
$ sudo apt install xfce4 xfce4-goodies gnome-icon-theme
我在這裡使用 緊VNC 服務器,其他流行的 VNC 服務器是 老虎VNC 和 x11vnc.
安裝tightvnc:
$ sudo apt install tightvncserver
接下來,讓我們運行一個 VNC 服務器實例,您必須為已安裝的服務器設置密碼:
$ vncserver
由於我們在安裝後第一次啟動服務器,它會要求我們設置客戶端用於連接的密碼。 它還會要求設置僅查看密碼,這將允許用戶查看屏幕但不能與之交互。
請注意,密碼長度在 6 到 8 個字符之間。 如果您輸入更長的密碼,它將被自動修剪掉。
如果要更改 VNC 服務器的密碼,請運行:
$ vncpasswd
配置 VNC 服務器
第一次啟動VNC服務器實例時,會創建初始配置文件:’~/.vnc/xstartup’,VNC服務器監聽5901端口,我們稱這個端口為顯示端口。 我們可以啟動 VNC 服務器的許多實例,每個實例都有自己的顯示端口:第一個顯示器偵聽端口 5901,第二個顯示器偵聽端口 5902,依此類推。
有必要將 VNC 服務器配置為與 Ubuntu 服務器啟動一起運行。 此外,您必須明確指出 VNC 服務器將連接到哪個桌面環境。
首先,讓我們停止在 TCP 端口 5901 上運行的當前 VNC 服務器實例:
$ vncserver -kill :1

然後備份當前的配置文件:
$ cp ~/.vnc/xstartup ~/.vnc/xstartup.bak
現在,使用您喜歡的編輯器修改“xstartup”文件,如下所示:
#!/bin/sh
xrdb $HOME/.Xresources
startxfce4 &
重啟 VNC 服務器:
$ vncserver -localhost

連接到 VNC 服務器
默認情況下,VNC 服務器不使用安全協議。 為了保護到遠程 Ubuntu 服務器的連接,您必須創建一個 SSH 隧道並指示 VNC 客戶端通過該隧道連接到 VNC 服務器。
讓我們在本地機器上建立一個 SSH 連接,將流量轉發到 VNC 的“本地主機”。 在本地機器(macOS 或 Linux)上啟動終端,運行以下命令:
$ ssh -L 59000:localhost:5901 -C -l <user> <server_ip_address
>
在哪裡:
-L 59000:本地主機:5901: 本地機器上的端口是 59000 將轉發到目標服務器: localhost:5901
-C: 壓縮數據以加快連接速度
-l <用戶>
在 Windows 上設置 SSH 隧道
如果運行 Windows 操作系統,您可以使用 PuTTY SSH 客戶端設置 SSH 隧道。
讓我們打開 PuTTY,然後輸入您的 Ubuntu 服務器的 IP 地址:

接下來,展開子菜單連接 > SSH > 隧道,在“源端口”中輸入“5901”,在“目標”中輸入“

通過使用 SSH 隧道,與 Ubuntu 20.04 服務器的 VNC 連接只允許可以通過 ssh 連接到服務器的機器。 它不允許每台機器都連接到端口 5901。
現在,您可以使用 VNC 客戶端連接到遠程 Ubuntu 服務器。 在本教程中,我們使用 VNC 查看器。 打開 VNC 客戶端,然後輸入服務器 IP 地址和端口 5901:

您已成功連接到 Ubuntu 服務器的 XFCE 桌面:

您可以像控制辦公室中的物理服務器一樣控制服務器。 為了 example,您可以訪問文件管理器、啟動程序或打開終端:

將 VNC 服務器設置為 systemd 服務
通過將 VNC 服務器作為系統服務運行,您可以隨時輕鬆啟動、停止或重新啟動它。
讓我們在您的 Ubuntu 服務器上的目錄“/etc/systemd/system/”中創建一個名為“[email protected]”的新文件:
$ sudo vim /etc/systemd/system/[email protected]
電子
將以下內容添加到文件“[email protected]”並確保編輯第 7、8、9 和 13 行中的值與您的環境匹配。

[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu
PIDFile=/home/ubuntu/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
然後,重新加載系統守護進程:
$ sudo systemctl daemon-reload
啟用服務:
$ sudo systemctl enable [email protected]
在哪裡:
@1.服務: 與端口 5901 關聯的第一個顯示器。
輸出:
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /etc/systemd/system/[email protected].
殺死正在運行的實例:
$ vncserver -kill :1
Killing Xtightvnc process ID 3159
然後再次啟動該 systemd 服務:
$ sudo systemctl start vncserver@1
現在,您可以驗證服務是否正常運行:
$ sudo systemctl status vncserver@1
輸出:
● [email protected] - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-08-16 17:37:51 UTC; 2min 2s ago
Process: 4611 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
Process: 4615 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1 (code=exited, status>
Main PID: 4623 (Xtightvnc)
Tasks: 129 (limit: 7125)
Memory: 187.5M
...
結論
在本教程中,我們學習瞭如何在 Ubuntu 20.04 上安裝和配置 VNC 服務器。 現在,您可以使用圖形用戶界面管理遠程 Ubuntu 服務器。
感謝您的閱讀,請在下面的評論部分留下您的建議。