内容提要
本文介绍了在Ubuntu 22.04 EC2实例上设置VNC服务器和noVNC代理的步骤,以便通过Web浏览器访问VNC会话。还提供了一些可选的增强功能,如加速noVNC和安装网页浏览器。
延伸解读
自签名证书的适用场景与局限
文章使用openssl生成自签名证书,仅适用于测试目的。浏览器会显示警告,需手动点击“Advanced”继续。若要将桌面公开,应替换为CA(如letsencrypt)颁发的证书。读者需注意,自签名证书无法提供可信身份验证,且警告可能被忽略,存在中间人攻击风险。
端口选择与权限考量
noVNC代理监听8443端口,文章解释选择高端口号是因为无需根权限。VNC服务器默认在5901端口(显示器1)。这种设计避免了以root运行服务,降低了安全风险。但读者需确保安全组开放8443端口,否则无法从外部访问。
后台运行与进程管理
使用screen命令运行start.sh脚本,可使VNC会话在退出SSH后保持活跃。脚本在启动时输出连接URL,并在终止时关闭VNC服务器。读者应注意,若screen会话意外终止,VNC服务也会停止。此外,脚本依赖EC2元数据获取公共IP,若实例无公共IP则URL生成可能失败。
Firefox安装的snap冲突与解决
Ubuntu 22默认通过snap安装Firefox,但snap权限问题可能导致其在VNC会话中无法正常工作。文章建议移除snap版,添加mozillateam PPA并设置pin优先级,以apt方式安装。操作中需使用--allow-downgrades参数,因为apt可能将安装视为降级。读者需注意,此方法可能影响系统其他snap包的管理。
Q&A
如何在Ubuntu 22.04上安装并配置VNC服务器?
首先更新系统:sudo apt-get update && sudo apt-get -y upgrade。然后安装轻量级桌面环境XFCE:sudo apt-get install -y xfce4 xfce4-goodies。接着安装tightvncserver:sudo apt-get install -y tightvncserver。运行vncserver设置密码,并更新~/.vnc/xstartup文件,替换为:#!/bin/bash xrdb $HOME/.Xresources startxfce4 &,以确保启动XFCE桌面。
如何通过浏览器访问Ubuntu的VNC桌面?
安装noVNC代理:git clone https://github.com/novnc/noVNC.git,并生成自签名证书:openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem。创建start.sh脚本启动VNC和noVNC,运行screen ./start.sh后,通过https://<公共IP>:8443/vnc.html?host=<公共IP>&port=8443访问。
为什么需要修改xstartup文件?如何修改?
默认的xstartup文件不会启动XFCE桌面,因此需要修改。备份原文件后,清空内容并添加:#!/bin/bash xrdb $HOME/.Xresources startxfce4 &。这样VNC服务器启动时会自动加载XFCE。
如何生成自签名证书用于noVNC的HTTPS连接?
在noVNC目录下运行:openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem。可以忽略证书信息填写(仅测试用)。若需公开访问,建议使用CA颁发的证书如Let's Encrypt。
start.sh脚本的作用是什么?如何运行?
start.sh脚本用于简化启动流程:在显示器1(端口5901)启动vncserver,启动noVNC代理将8443端口转发到5901,并在脚本终止时关闭vncserver。保存脚本后赋予执行权限:chmod u+x start.sh,然后运行screen ./start.sh以在后台保持会话。
如何加速noVNC的性能?
安装numpy包以加速noVNC的WebSocket通信:sudo apt-get install -y python3-pip && pip3 install numpy。这可以提升HyBi协议的性能。
在VNC会话中如何安装Firefox浏览器?
由于Ubuntu 22默认使用snap安装Firefox,可能在VNC中权限有问题,需从apt安装:先移除snap版:sudo snap remove firefox,添加PPA:sudo add-apt-repository ppa:mozillateam/ppa,设置包优先级,然后安装:sudo apt-get install -y --allow-downgrades firefox。