要把Ubuntu系统作为VNC客户端,远程连接到另一台设备(比如Windows电脑、Mac或者别的Linux系统),本质上需要两头都做好准备:一台负责发起连接,另一台要能接收并响应请求。下面这个流程,就是把整个操作拆解开来,一步步说清楚。

1. 把Ubuntu系统配置成VNC客户端
作为发起连接的一方,Ubuntu系统需要安装一个VNC客户端。推荐用Remmina,它功能全面,图形化界面也友好;当然,如果你习惯命令行,TightVNC Viewer也是个轻量选择。
sudo apt update
sudo apt install remmina tightvncviewer -y
Remmina的优势在于支持多种协议(VNC、RDP、SSH),你以后可能还会用到它连接Windows远程桌面,省得再装别的工具。而tightvncviewer则更纯粹,适合在终端里快速连一下。
2. 把目标设备设为VNC服务器
目标设备——也就是你要远程过去的那台机器——必须运行一个VNC服务器,才能共享桌面。不同系统配置略有差异,咱们分开来看。
A. 如果目标设备是Ubuntu/Linux系统
假如你要连的是另一台Ubuntu,可以按以下步骤配置VNC服务端:
- 安装VNC服务器:推荐使用
tigervnc-standalone-server,轻量且安全;当然tightvncserver也能用。sudo apt update sudo apt install tigervnc-standalone-server tigervnc-common -y - 设置VNC密码:运行
vncpasswd,输入一个至少6位数的密码。这个密码就是客户端连接时用的凭证。 - 配置桌面环境:编辑
~/.vnc/xstartup文件,告诉VNC服务器启动时加载哪个桌面环境。以Ubuntu默认的GNOME为例:
写入以下内容(如果你偏好其他桌面环境,可以替换):nano ~/.vnc/xstartup
保存后,别忘记给文件加上执行权限:#!/bin/sh export GNOME_SHELL_SESSION_MODE=ubuntu export XDG_CURRENT_DESKTOP=ubuntu:GNOME export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg exec /etc/X11/Xsession ubuntu-xsessionchmod +x ~/.vnc/xstartup - 启动VNC服务器:用
:1这样的显示编号来指定端口(:1对应5901端口)。比如:
以后想关掉它,可以用:vncserver :1 -geometry 1920x1080 -depth 24vncserver -kill :1 - 配置防火墙:允许VNC流量通过
5901端口(对应:1):sudo ufw allow 5901/tcp sudo ufw reload
B. 如果目标设备是Windows系统
在Windows上,需要安装一个VNC服务器,比如RealVNC或TightVNC。
- 从官网下载安装包,安装过程中会要求设置一个访问密码。
- 在服务器设置里,确保“允许远程连接到此计算机”被勾选。
- 记下Windows电脑的本地IP地址(在命令提示符里运行
ipconfig就能看到)。
C. 如果目标设备是macOS系统
macOS其实自带屏幕共享功能,而且原生支持VNC协议。
- 打开“系统设置” > “通用” > “共享”,开启“屏幕共享”开关。
- 在“屏幕共享密码”里设置一个密码,客户端连接时需要用到。
- 记下Mac的本地IP地址(在“系统设置” > “网络”里可以看到)。
3. 从Ubuntu发起连接
目标设备配置好VNC服务器之后,就可以在Ubuntu这边发起连接了。有两种方式推荐:
方式一:用Remmina图形界面
- 打开Remmina,点击左上角的“+”号新建连接。
- 在“协议”下拉菜单里选择“VNC”。
- 填入目标设备的信息:
- 点击“保存并连接”,软件会提示你输入密码,验证通过后就能看到远程桌面了。
方式二:用TightVNC Viewer命令行
如果你习惯终端操作,直接运行:
vncviewer <目标IP>:<显示编号>
比如要连接IP为192.168.1.100、显示编号为:1的Windows电脑:
vncviewer 192.168.1.100:1
系统会提示你输入密码,输入正确后,远程桌面就出现在眼前了。
4. 安全操作建议
VNC协议本身默认不加密,所以在公网或不可信网络里使用时,需要多加一层保护。下面几个做法值得养成习惯:
- 使用SSH隧道加密:通过SSH将VNC流量转发,比如先建立SSH隧道:
然后VNC客户端连接ssh -L 5901:localhost:5901 user@目标IPlocalhost:5901,所有数据都会经过SSH加密通道,安全性大大提升。 - 限制访问来源:在目标设备的防火墙里,只允许特定IP地址(比如你的Ubuntu机器IP)访问VNC端口,避免被全网扫描。
- 保持软件更新:VNC服务端和客户端都要定期更新,很多安全漏洞都是通过补丁修复的。
- 密码不能太简单:VNC密码建议用字母、数字、特殊符号组合,长度至少8位以上。
按照这个流程操作下来,Ubuntu系统就能稳定、安全地远程控制其他设备了。实际使用中,大部分问题都出在防火墙配置和密码设置上,碰到连不上的情况,优先检查这两项。