通过 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
连接到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)