在 Ubuntu 20.04 上安裝和配置 VNC

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 服務器是 老虎VNCx11vnc.

安裝tightvnc:

$ sudo apt install tightvncserver

接下來,讓我們運行一個 VNC 服務器實例,您必須為已安裝的服務器設置密碼:

$ vncserver

由於我們在安裝後第一次啟動服務器,它會要求我們設置客戶端用於連​​接的密碼。 它還會要求設置僅查看密碼,這將允許用戶查看屏幕但不能與之交互。

啟動 vncserver

請注意,密碼長度在 6 到 8 個字符之間。 如果您輸入更長的密碼,它將被自動修剪掉。

如果要更改 VNC 服務器的密碼,請運行:

$ vncpasswd

配置 VNC 服務器

第一次啟動VNC服務器實例時,會創建初始配置文件:’~/.vnc/xstartup’,VNC服務器監聽5901端口,我們稱這個端口為顯示端口。 我們可以啟動 VNC 服務器的許多實例,每個實例都有自己的顯示端口:第一個顯示器偵聽端口 5901,第二個顯示器偵聽端口 5902,依此類推。

有必要將 VNC 服務器配置為與 Ubuntu 服務器啟動一起運行。 此外,您必須明確指出 VNC 服務器將連接到哪個桌面環境。

首先,讓我們停止在 TCP 端口 5901 上運行的當前 VNC 服務器實例:

$ vncserver -kill :1

vncserver -kill :1

然後備份當前的配置文件:

$ cp ~/.vnc/xstartup ~/.vnc/xstartup.bak

現在,使用您喜歡的編輯器修改“xstartup”文件,如下所示:

#!/bin/sh

xrdb $HOME/.Xresources
startxfce4 &

重啟 VNC 服務器:

$ vncserver -localhost

vncserver -本地主機vncserver -本地主機

連接到 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 <用戶> : 表示您將登錄的用戶和 Ubuntu 20.04 服務器的 IP 地址

在 Windows 上設置 SSH 隧道

如果運行 Windows 操作系統,您可以使用 PuTTY SSH 客戶端設置 SSH 隧道。

讓我們打開 PuTTY,然後輸入您的 Ubuntu 服務器的 IP 地址:

Putty上的IP地址在 Putty 上輸入 Ubuntu 服務器的 IP 地址

接下來,展開子菜單連接 > SSH > 隧道,在“源端口”中輸入“5901”,在“目標”中輸入“:5901”。 然後,單擊“添加”按鈕,如下所示:

在膩子上創建 ssh 隧道膩子上的 ssh 隧道

通過使用 SSH 隧道,與 Ubuntu 20.04 服務器的 VNC 連接只允許可以通過 ssh 連接到服務器的機器。 它不允許每台機器都連接到端口 5901。

現在,您可以使用 VNC 客戶端連接到遠程 Ubuntu 服務器。 在本教程中,我們使用 VNC 查看器。 打開 VNC 客戶端,然後輸入服務器 IP 地址和端口 5901:

Enter  Ubuntu 服務器 IP 地址和端口 5901Enter Ubuntu 服務器 IP 地址和端口 5901

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

vnc查看器vnc查看器

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

控制 Ubuntu 服務器控制 Ubuntu 服務器

將 VNC 服務器設置為 systemd 服務

通過將 VNC 服務器作為系統服務運行,您可以隨時輕鬆啟動、停止或重新啟動它。

讓我們在您的 Ubuntu 服務器上的目錄“/etc/systemd/system/”中創建一個名為“[email protected]”的新文件:

$ sudo vim /etc/systemd/system/[email protected]電子

將以下內容添加到文件“[email protected]”並確保編輯第 7、8、9 和 13 行中的值與您的環境匹配。

vncserver@.service[email protected]

[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 服務器。

感謝您的閱讀,請在下面的評論部分留下您的建議。