通过 SSH 隧道的 VNC连接

为了提高安全性,您可以通过 VNC 服务器上的 SSH 建立 VNC 连接隧道。

如果我们还没有安装SSH:

$ sudo apt install ssh

在本地端口 5901 上创建一个 SSH 隧道,连接到 VNC 服务器上的远程端口 5901。

$ ssh -L 5901:127.0.0.1:5901 -N -f -l user1 onitroad

上面的命令将在本地主机环回网络接口“127.0.0.1”上打开一个本地端口“5901”:

$ ss -ltn
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN      0      128       0.0.0.0:22                    0.0.0.0:*
LISTEN      0      5       127.0.0.1:631                   0.0.0.0:*
LISTEN      0      128     127.0.0.1:6010                  0.0.0.0:*
LISTEN      0      128     127.0.0.1:6011                  0.0.0.0:*
LISTEN      0      128       0.0.0.0:38299                 0.0.0.0:*
LISTEN      0      128     127.0.0.1:5901                  0.0.0.0:*

使用本地端口 5901通过 SSH 隧道连接到远程 VNC 服务器:

$ vncviewer localhost:1

安装VNC服务器

我们需要先安装一些包。
VNC Server软件有多种选项,本教程我们将使用TriceVNC服务器。
与VNC一起,我们还需要一个图形桌面。
XFCE是一个不错的选择。

安装TightVNC服务器和XFCE桌面管理器核心文件:

$ sudo apt install tightvncserver XFCE4 XFCE4-goodies

配置将用于连接到客户端连接到VNC服务器的用户名和密码。使用此命令创建密码:

$ vncpasswd

配置 VNC 以在客户端连接时启动 XFCE 桌面环境。
创建下面文件:

$ nano ~/.vnc/xstartup

添加下面内容:

#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &

设置可执行权限:

$ chmod +x ~/.vnc/xstartup
如何在ubuntu 20.04 Linux上安装VNC服务器

连接到VNC服务器

VNC 客户端的方式有很多选择,其中任何一个都应该能够连接到您新启动的 VNC 服务器。
这里我们使用TightVNC Viewer。

在Ubuntu客户端系统上安装“XTightVNCViewer”软件包:

$ sudo apt install xtightvncviewer

安装VNC客户端后,我们可以使用“vncviewer”命令,后面是VNC服务器的主机名或者IP地址,以便连接到它。

$ vncviewer onitroad.com:1

输入我们在设置VNC服务器时创建的密码。
如果一切顺利,我们将在远程VNC Server Ubuntu系统上呈现运行的XFCE桌面会话。

VNC服务器系统启动脚本

虽然此配置有效,但我们可能需要管理多个VNC桌面会话的场景。
在这种情况下,创建系统启动脚本可以促进该系统。

创建以下文件:

$ sudo nano /etc/systemd/system/vncserver@.service

打开文件后,在第7行和第10行使用VNC用户的用户名时插入以下行。
(可选),更改屏幕分辨率设置并应用其他VNCServer选项或者参数:

[Unit]
Description=Systemd VNC server startup script for Ubuntu 20.04
After=syslog.target network.target
[Service]
Type=forking
User=user1
ExecStartPre=-/usr/bin/vncserver -kill :%i &> /dev/null
ExecStart=/usr/bin/vncserver -depth 24 -geometry 800x600 :%i
PIDFile=/home/user1/.vnc/%H:%i.pid
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target

接下来,重新加载SystemD以使更改生效:

$ sudo systemctl daemon-reload

要启动VNC桌面1,请输入:

$ sudo service vncserver@1 start

停止VNC桌面1,执行:

$ sudo service vncserver@1 stop

设置开机自启动:

$ sudo systemctl enable vncserver@1

要启动VNC桌面2,请输入:

$ sudo service vncserver@2 start

启动VNC服务器

VNC作为系统上的服务运行。
为了使客户端连接,VNC服务器必须正在运行并侦听传入的连接尝试。

$ vncserver

如果终端返回一些输出,则VNC服务器运行正常。

VNC 将为每个创建的远程桌面使用一个新端口。

可以使用 ss -ltn命令确认。

$ ss -ltn

如果您启用了 UFW 防火墙,则需要打开端口“5901”,以便它不会阻止传入的 VNC 连接:

$ sudo ufw allow from any to any port 5901 proto tcp
Rule added
Rule added (v6)
日期:2020-07-07 20:55:48 来源:oir作者:oir