在Ubuntu上使用VNC进行加密连接
直接通过VNC进行远程桌面连接,虽然方便,但默认的通信往往是明文的,这在公共网络环境下无疑是个安全隐患。好在,我们有几种成熟的方法可以为VNC连接套上“加密外壳”,确保数据传输的安全。下面这张图直观地展示了加密VNC连接的核心流程。

接下来,我们具体看看两种主流方案:一种是使用支持原生加密的VNC服务器,另一种则是借助经典的SSH隧道技术。
使用TightVNC进行加密传输
如果你的VNC客户端也支持加密协议,那么直接配置TightVNC服务器会是一个高效的选择。它的核心思路是启用服务器端的加密功能。
- 安装TightVNC服务器:
第一步,自然是把服务器端软件安装到位。
sudo apt-get install tightvncserver
- 生成加密密钥文件:
安装完成后,需要先为连接设置一个访问密码,这个密码会被用于后续的加密认证。
vncpasswd
- 启动TightVNC服务器并设置密码:
启动服务器时,可以通过参数指定我们想要使用的安全类型。这里我们同时启用了几种常见的加密方式。
tightvncserver -SecurityTypes VeNCrypt -SecurityTypes TLSVnc -SecurityTypes VncAuth
- 在TightVNC服务器配置文件中启用加密:
为了让设置持久化,避免每次启动都输入一长串参数,我们直接修改配置文件。
nano ~/.vnc/config
在打开的文件中,添加下面这行配置,它明确了服务器接受的安全协议类型。
SecurityTypes VeNCrypt,TLSVnc,VncAuth
- 重新启动TightVNC服务器:
最后,重启服务让新的配置生效。
tightvncserver -kill :1
tightvncserver :1
使用SSH隧道加密VNC通信
如果觉得配置VNC原生加密有点复杂,或者你的客户端不支持,那么SSH隧道绝对是更通用、更值得信赖的方案。它的原理很简单:把所有VNC流量都塞进一条加密的SSH通道里传输。
- 安装VNC服务器(如
vnc4server):
首先,确保远程Ubuntu机器上已经安装了VNC服务器软件。
sudo apt-get install vnc4server
- 启动VNC服务器,第一次启动会要求输入密码:
在远程服务器上启动一个VNC会话,并记住它使用的显示端口号(通常是:1对应端口5901)。
vncserver
- 通过SSH创建加密隧道:
关键步骤来了。在你自己的本地电脑上打开终端,运行下面的命令。这个命令的意思是:在本地打开一个端口(5901),所有发往这个端口的数据,都会通过SSH加密隧道,转发到远程服务器的指定端口(5900)。
在本地机器上打开终端,运行以下命令:
ssh -L 5901:localhost:5900 user@remote-server
其中 user 是远程服务器上的用户名,remote-server 是远程服务器的IP地址或主机名。
- 使用VNC客户端连接:
隧道建立好后,你的VNC客户端就不再直接连接远程服务器了。你只需要告诉客户端,连接到你自己电脑的localhost:5901。剩下的加密和解密工作,SSH隧道会默默帮你完成。
在VNC客户端中输入远程服务器的IP地址和端口 5901,然后输入之前设置的密码进行连接。
设置VNC服务器密码
无论采用哪种加密方式,一个强密码都是安全的第一道防线。这里提供两种设置或修改VNC服务器密码的途径。
- 通过命令行设置密码:
对于系统级的VNC服务,可以通过修改配置文件和使用专用命令来设置密码。
sudo nano /etc/vnc/config.d/common.custom
在文件中找到或添加以下行,确保使用VNC密码认证:
AuthenticationVncAuth
保存文件并退出编辑器。
使用以下命令设置VNC服务器的密码:
sudo vncpasswd -service
重启VNC服务器以使更改生效:
sudo service vncserver restart
- 通过VNC服务器的管理界面设置密码(如果VNC服务器支持):
一些带Web管理界面的VNC服务器(如RealVNC)提供了更直观的修改方式。
登录到VNC服务器的管理界面,通常在Web浏览器中输入服务器的IP地址和端口号。在管理界面中找到设置或安全选项,然后找到密码设置选项。输入并确认新密码,然后保存更改。重启VNC服务器以使更改生效。
通过以上步骤,您可以在Ubuntu上使用VNC进行加密连接,确保远程桌面的安全性。两种加密方式各有侧重,原生加密更直接,SSH隧道则更灵活通用,你可以根据实际环境和需求来选择。
