温馨提示×

Ubuntu VNC如何使用SSL加密连接

小樊
46
2025-09-20 22:50:39
栏目: 云计算

Ubuntu VNC使用SSL加密连接的步骤

1. 准备工作:更新系统并安装必要软件

首先更新系统软件包列表,确保所有组件为最新版本,然后根据需求选择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

2. 生成SSL证书(自签名/受信任)

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参数调整)。

3. 配置VNC服务器启用SSL

方案一:TightVNC + Stunnel(反向隧道)

  • 配置Stunnel:编辑Stunnel主配置文件,添加VNC转发规则:
    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
    
  • 启动Stunnel
    sudo systemctl start stunnel4
    sudo systemctl enable stunnel4  # 开机自启
    

方案二:TigerVNC直接配置SSL

  • 修改启动脚本:编辑用户目录下的.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
    

4. 启动VNC服务器并设置密码

  • 首次启动:运行以下命令创建VNC会话(:1表示显示号,对应端口5901):
    vncserver :1
    
    首次启动会提示设置VNC密码(用于客户端认证)。
  • 停止现有会话(若需修改配置):
    vncserver -kill :1
    

5. 配置防火墙允许VNC流量

确保Ubuntu防火墙(UFW)允许VNC端口(默认5900+显示号,如5901)的入站连接:

sudo ufw allow 5901/tcp  # 若使用Stunnel,需开放5900端口
sudo ufw enable          # 启用防火墙(若未启用)

6. 连接加密的VNC服务

  • 使用Stunnel方案:客户端直接连接服务器的5900端口(vnc://your_server_ip:5900),Stunnel会自动处理SSL加密。
  • 使用TigerVNC方案:客户端连接服务器的5901端口(vnc://your_server_ip:5901),并在客户端中启用SSL选项(如RealVNC需勾选“Use SSL”)。

注意事项

  • 自签名证书会在客户端连接时提示“不受信任”,需手动确认继续;生产环境建议使用Let’s Encrypt等CA颁发的证书。
  • 若VNC服务器位于远程主机,建议通过SSH隧道进一步加密(ssh -L 本地端口:localhost:5901 user@server_ip),避免证书私钥泄露风险。
  • 定期更换VNC密码和SSL证书(尤其是自签名证书),提升安全性。

0