Ubuntu VNC使用SSL加密连接的步骤
首先更新系统软件包列表,确保所有组件为最新版本,然后根据需求选择VNC服务器(以TightVNC和TigerVNC为例):
sudo apt update && sudo apt upgrade -y
# 安装TightVNC(方案一)
sudo apt install tightvncserver stunnel4 -y
# 或安装TigerVNC(方案二)
sudo apt install tigervnc-standalone-server tigervnc-common -y
SSL加密需要证书,推荐使用OpenSSL生成自签名证书(适用于测试环境,生产环境建议使用受信任CA颁发的证书):
sudo mkdir -p /etc/ssl/private /etc/ssl/certs
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vnc.key -out /etc/ssl/certs/vnc.crt
执行后会提示输入国家、省份、组织等信息,按需填写即可。证书有效期设为365天(可通过-days参数调整)。
sudo nano /etc/stunnel/stunnel.conf
在文件末尾添加以下内容(监听5900端口,转发至本地5900端口):[vnc]
accept = 5900
connect = 127.0.0.1:5900
cert = /etc/ssl/certs/vnc.crt
key = /etc/ssl/private/vnc.key
verify = 0 # 测试环境可关闭客户端证书验证,生产环境建议设为1
sudo systemctl start stunnel4
sudo systemctl enable stunnel4 # 开机自启
.vnc/xstartup文件(如~/.vnc/xstartup),添加SSL参数:nano ~/.vnc/xstartup
在文件开头添加以下内容(替换证书路径):#!/bin/sh
exec /usr/bin/tigervncserver -geometry 1920x1080 -depth 24 \
-localhost no -rfbauth /home/yourusername/.vnc/passwd \
-rfbport 5900 -ssl -cert /etc/ssl/certs/vnc.crt -key /etc/ssl/private/vnc.key
保存后赋予执行权限:chmod +x ~/.vnc/xstartup
:1表示显示号,对应端口5901):vncserver :1
首次启动会提示设置VNC密码(用于客户端认证)。vncserver -kill :1
确保Ubuntu防火墙(UFW)允许VNC端口(默认5900+显示号,如5901)的入站连接:
sudo ufw allow 5901/tcp # 若使用Stunnel,需开放5900端口
sudo ufw enable # 启用防火墙(若未启用)
vnc://your_server_ip:5900),Stunnel会自动处理SSL加密。vnc://your_server_ip:5901),并在客户端中启用SSL选项(如RealVNC需勾选“Use SSL”)。ssh -L 本地端口:localhost:5901 user@server_ip),避免证书私钥泄露风险。