根据Ubuntu 20.04安装VNC服务(Xfce4)配置好VNC后,连接时会提示数据未加密所以不安全。
查阅文档后得知TigerVNC支持X.509认证的TLS加密。
¶设置方法
¶服务端
首先生成认证文件。可以使用商业的认证(如有)。如果没有,则需要使用OpenSSL生成自己的认证。
-
安装OpenSSL
- RedHat/CentOS/Fedora:
sudo yum install openssl
- Debian/Ubuntu/Mint:
sudo apt-get install openssl
- RedHat/CentOS/Fedora:
-
使用OpenSSL生成认证密钥对
1
openssl req -x509 -newkey rsa -days 365 -nodes -keyout vnc-server-private.pem -out vnc-server.pem -subj '/CN=<your server ip>' -addext "subjectAltName=IP:<your server ip>"
(将
<your server ip>
替换成服务器真实IP)会在运行命令的文件夹下面生成
vnc-server-private.pem
和vnc-server.pem
两个文件。将vnc-server.pem
下载到客户机上备用。 -
(可选)为了便于管理,将密钥对拷贝到
~/.vnc
下面。 -
附带以下参数运行
vncserver
:
1 | vncserver -localhost no -SecurityTypes X509Vnc -X509Key vnc-server-private.pem -X509Cert vnc-server.pem |
¶客户端(使用TigerVNCviewer)
点击Options...
按钮,将Security
选项卡下的Path to X509 CA certificate
指向从OpenSSL生成的公钥pem文件vnc-server.pem
(之前从服务端下载的)。
然后照常连接。可以看到连接已经变成安全的了。
¶服务端配置文件
如果不想每次都运行服务都需要打那么长一串命令,可以把选项写入服务器上的配置文件,并放在~/.vnc
文件夹下:
- 版本1.10:
~/.vnc.conf
- 版本1.12+:
~/.vnc/tigervnc.conf
配置文件内容如下:
1 | $localhost="no"; |