1. 引言
为什么在 Ubuntu 上使用 VNC?
在 Linux 发行版中,Ubuntu 是最受欢迎的之一,被广泛用于开发、服务器操作以及许多其他用途。通常,Ubuntu 服务器通过命令行进行操作,但有许多情况需要使用 GUI(图形用户界面)会更理想。
这就是 VNC(Virtual Network Computing) 的用武之地。通过使用 VNC,您可以从网络远程连接到 Ubuntu 机器,并像操作本地桌面一样工作。这种视觉化、直观的操作大大降低了 Linux 初学者和 Windows 用户的门槛,因为它消除了仅依赖复杂命令行操作的必要性。
远程桌面环境的需求日益增长
近年来,随着远程工作的扩展,使用 VNC 在 Ubuntu 上构建远程桌面环境的需求显著增加。 特别是,在开发 Ubuntu 服务器上安装 VNC 并启用 GUI 操作,可以提高配置和维护任务的效率。
此外,对于使用 GUI 操作基于云或 VPS 托管的 Ubuntu 环境的需求很强烈,而 VNC 作为满足这一需求的有效桥梁。
本文的读者对象和目的
本文针对以下读者:
- 首次在 Ubuntu 上安装 VNC 的人
- 不习惯仅使用 CLI 工作并希望获得 GUI 环境的用户
- 感到仅使用 SSH 工作流程受限并更喜欢 VNC 而非 RDP 的人
- 希望获得包括 日文输入支持 的舒适远程环境的用户
本指南以初学者友好的方式仔细解释了在 Ubuntu 上安装 VNC 服务器并启用远程桌面访问的整个过程。它还涵盖了 日文输入配置 和 使用 SSH 隧道的安全连接,使其成为一个全面且实用的资源。
2. 先决条件和准备
在 Ubuntu 上安装 VNC 之前需要检查的内容
在 Ubuntu 上安装和使用 VNC 服务器之前,需要几个先决条件和准备。本节总结了开始之前您应该验证的关键点。
支持的 Ubuntu 版本
本文针对 Ubuntu 20.04 LTS 和 Ubuntu 22.04 LTS。这些版本被广泛使用,并与 VNC 服务器和日文输入环境提供稳定的兼容性。
如果您使用的是其他版本,基本步骤保持不变,但某些包名或行为可能会有所不同。
服务器要求和推荐规格
由于 VNC 是一种基于 GUI 的远程访问方法,它需要一定水平的系统资源(CPU 和内存)。推荐配置如下:
- CPU : 双核或更高(至少约 1 GHz)
- 内存 : 推荐 2 GB 或更多(假设使用轻量级桌面如 Xfce)
- 存储 : 至少 10 GB 可用磁盘空间
- 网络 : 启用 SSH 访问,并在防火墙上打开 VNC 端口(默认例如 5901)
所需权限和工具
安装和配置 VNC 服务器需要以下内容:
- 具有 sudo 权限的用户帐户
- SSH 客户端(Windows 上的 PuTTY、macOS 或 Linux 上的 Terminal)
由于设置是远程进行的,Ubuntu 服务器必须启用 SSH。如果尚未可用,请使用 sudo apt install openssh-server 安装它。
选择桌面环境
由于 VNC 传输 GUI 输出,Ubuntu 上必须安装桌面环境。然而,GNOME(包含在 Ubuntu Desktop 中)资源密集型,不适合服务器使用。
因此,本文假设使用 轻量级桌面环境如 Xfce 或 MATE:
- Xfce : 轻量级、稳定且适合初学者。
- MATE : 经典 UI,具有良好的性能和稳定性。
此选择将在后续部分中详细讨论。
3. 安装桌面环境
为什么需要桌面环境?
通过 VNC 连接到 Ubuntu 时,除非安装了桌面环境,否则不会显示屏幕。VNC 旨在远程操作 GUI,因此像 Ubuntu Server 这样的纯 CLI 环境无法充分利用 VNC。
选择轻量级桌面环境
对于 VNC 使用,理想的桌面环境应该是轻量级且稳定的。下面是两个受欢迎的选项。
1. Xfce
Xfce 极其轻量,即使在较旧的 PC 或 VPS 环境中也能表现出色。它提供基本功能,设计简单且用户友好,非常适合 VNC。
2. MATE
MATE 是基于 GNOME 2 的经典桌面环境。虽然外观比 Xfce 稍丰富,但它仍然相对轻量且高度稳定。
安装 Xfce(推荐)
要安装 Xfce,请运行以下命令:
sudo apt update
sudo apt install -y xfce4 xfce4-goodies
xfce4-goodies 包包含有用的附加工具,可以增强桌面体验。
安装可能需要几分钟时间,因此请监控过程以确保没有错误发生。
安装 MATE(备选)
如果您更喜欢 MATE,请使用以下命令安装它:
sudo apt update
sudo apt install -y ubuntu-mate-core
MATE 比 Xfce 消耗稍多资源,但推荐给重视传统桌面外观和感觉的用户。
重要提示:不要安装多个桌面环境
安装多个桌面环境(如同时安装 Xfce 和 MATE)不推荐。它会使登录时的会话选择复杂化,并经常导致 VNC 配置错误。
请选择并安装一个桌面环境。
4. 安装和配置 VNC 服务器
Ubuntu 上需要哪种 VNC 服务器软件?
VNC(Virtual Network Computing)由两个组件组成:客户端和服务器。在 Ubuntu 端,您需要安装一个VNC 服务器,它允许远程访问 Ubuntu GUI。
有几种 VNC 服务器实现可用。在本指南中,我们将使用TigerVNC,它是其中最受欢迎和可靠的选项之一。
- TigerVNC(推荐) 快速、稳定,与 Xfce 和 MATE 配合良好。
- TightVNC 轻量级,与旧系统兼容,但开发已放缓。
安装 TigerVNC
使用以下命令安装 TigerVNC 服务器:
sudo apt update
sudo apt install -y tigervnc-standalone-server tigervnc-common
安装完成后,继续进行初始配置。
初始启动和密码设置
首次启动 VNC 服务器时,您必须设置一个连接密码。
vncserver
您将看到类似于以下的提示:
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)?
“仅查看密码”用于只读访问。在大多数情况下,选择 n 就足够了。
编辑 VNC 配置文件(xstartup)
启动 VNC 会话后,将在您的主目录中创建一个名为 ~/.vnc/xstartup 的文件。此文件是一个启动脚本,它指定 VNC 会话启动时要启动哪个桌面环境。
Xfce 的配置
#!/bin/sh
xrdb $HOME/.Xresources
startxfce4 &
MATE 的配置
#!/bin/sh
xrdb $HOME/.Xresources
mate-session &
编辑后,为脚本授予执行权限:
chmod +x ~/.vnc/xstartup
启动和验证 VNC 会话
一旦一切准备就绪,继续启动 VNC 会话:
vncserver :1
:1 值表示虚拟显示编号。在首次运行时,通常为 :1。
通过 VNC 连接时,使用相应的端口号(例如,5901),计算方式为 5900 + 显示编号。
停止 VNC 会话
要停止会话,请使用以下命令:
vncserver -kill :1
5. 配置 VNC 服务器自动启动
为什么启用 VNC 服务器的自动启动?
默认情况下,VNC 服务器必须为每个用户手动启动和停止。每次运行 vncserver 命令很不方便,而且服务器重启后 VNC 会话不会自动启动。
因此,通常的做法是 将 VNC 服务器注册为 systemd 服务并启用自动启动。这确保了稳定且持久的 VNC 环境。
创建 systemd 服务文件
为每个用户创建一个专用的 systemd 服务文件。在本例中,VNC 显示编号设置为 :1。
sudo nano /etc/systemd/system/vncserver@:<display-number>.service
例如,要创建 vncserver@:1.service,请使用:
sudo nano /etc/systemd/system/vncserver@\:1.service
复制并粘贴以下内容,用您自己的用户名替换:
[Unit]
Description=Start TigerVNC server at startup
After=network.target
[Service]
Type=forking
User=yourusername
PAMName=login
PIDFile=/home/yourusername/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -geometry 1280x800 -depth 24
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
将 yourusername 替换为您的实际用户名。
geometry 参数定义屏幕分辨率,可以根据需要调整。
启用并启动服务
保存服务文件后,重新加载 systemd 并启用服务:
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable vncserver@:1.service
sudo systemctl start vncserver@:1.service
验证服务状态
检查服务状态以确认其正常运行:
sudo systemctl status vncserver@:1.service
如果看到 Active: active (running),则设置成功。
重要说明:用户特定服务
此配置仅适用于 特定用户的 VNC 会话。如果多个用户需要 VNC 访问,则必须为每个用户创建单独的 systemd 服务文件。
6. 从客户端连接
什么是 VNC 客户端?
仅在 Ubuntu 上安装 VNC 服务器并不能启用远程操作。在客户端(您操作的计算机)上,您必须安装 VNC 查看器(VNC 客户端) 并从中连接到 Ubuntu 服务器。
推荐的 VNC 客户端
以下 VNC 客户端广泛使用,并因其可用性和与 Ubuntu 的兼容性而备受推崇:
| Client Name | Supported OS | Features |
|---|---|---|
| RealVNC Viewer | Windows / Mac / Linux / iOS / Android | Simple, stable, and suitable for enterprise use |
| TigerVNC Viewer | Windows / Mac / Linux | Open source and free to use |
| UltraVNC | Windows | Feature-rich but geared toward advanced users |
| Remmina | Linux only | GUI client supporting multiple protocols |
使用 RealVNC Viewer 或 TigerVNC Viewer 通常是最安全的选择。两者均为免费。

如何从客户端连接(示例:RealVNC Viewer)
以下步骤描述了如何使用 RealVNC Viewer 连接。对于 TigerVNC Viewer 的过程类似。
1. 安装 RealVNC Viewer
从官方网站(https://www.realvnc.com/)下载并安装适合您操作系统的版本。
2. 输入 VNC 服务器地址
启动应用程序后,按以下方式输入目标:
<server-ip-address>:5901
或
<server-ip-address>:1
两种格式等效(5900 + 显示编号 = 端口号)。
3. 输入密码
输入您先前配置的 VNC 密码。
如果成功,将显示 Ubuntu 桌面。
故障排除:无法连接
如果 VNC 连接失败,请考虑以下原因。
● 端口未打开
检查端口 5901 是否被防火墙或云安全组阻止。
● 您是否在使用 SSH 隧道?
如果您未使用下一节中描述的 SSH 隧道连接,出于安全原因,VNC 端口可能不会公开访问。
在 macOS 上连接
在 macOS 上,您也可以使用 RealVNC 或 TigerVNC Viewer。安装后,按照与 Windows 相同的方式指定 IP 地址和端口进行连接。
使用智能手机
iOS 和 Android 也有 VNC 客户端应用。这在使用平板电脑访问 Ubuntu 服务器时可能有用,但可用性通常不如 PC,最好仅在紧急情况下使用。
7. 配置日语输入
为什么在 VNC 环境中需要日语输入
即使通过 VNC 启用了对 Ubuntu 的远程访问,默认情况下日语输入通常不可用,这会妨碍撰写文档、重命名文件或使用聊天工具等任务。
Ubuntu 常常在英文环境下安装,日语语言环境和输入法(IME)可能未安装。本节将说明如何在 VNC 会话中启用舒适的日语输入。
安装日语语言环境
首先,启用日语语言环境以支持日语显示和输入:
sudo apt update
sudo apt install -y language-pack-ja
然后更新语言环境设置:
sudo update-locale LANG=ja_JP.UTF-8
注销后重新登录或重启后,GUI 语言可能会切换为日语。如果 VNC 中显示不稳定,保持界面为英文也是可以接受的。
选择输入法:fcitx 与 ibus
Ubuntu 上最常用的两种日语输入法是:
| Input Method | Features |
|---|---|
| fcitx-mozc | Lightweight, easy to configure, and stable in VNC environments |
| ibus-mozc | Well integrated with GNOME, but sometimes unstable in VNC |
对于 VNC 环境,通常推荐 fcitx-mozc,因为问题更少。
安装并配置 fcitx-mozc
sudo apt install -y fcitx-mozc
接下来,设置所需的环境变量,以便输入法能够正确启动。
将以下内容添加到 ~/.xprofile 或 ~/.profile:
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
然后添加启动 fcitx 的命令:
fcitx &
将此行也放入 ~/.vnc/xstartup 文件中会更方便。
示例(部分 xstartup 文件):
#!/bin/sh
xrdb $HOME/.Xresources
fcitx &
startxfce4 &
验证日语输入
通过 VNC 登录后,检查 fcitx 配置工具(如 fcitx-config-gtk3)中已启用 “Mozc”。
您可以使用 半角/全角 键或 Ctrl + Space 切换 IME 的开关。
常见问题及解决方案
| Symptom | Cause and Solution |
|---|---|
| IME does not start | fcitx not launched or environment variables misconfigured |
| Input works but Kanji conversion fails | Mozc not enabled or fcitx configuration incomplete |
| fcitx must be started manually every time | fcitx & missing from .xstartup |
至此,VNC 会话中流畅的日语输入设置完成。下一节将说明如何使用 SSH 隧道来保护 VNC 连接。
8. 使用 SSH 隧道保护 VNC
VNC 连接默认未加密
虽然 VNC 是一种方便的远程桌面解决方案,但它有一个严重的缺点:默认情况下其流量未加密。这会导致密码或屏幕数据被第三方拦截的风险。
因此,在通过互联网连接 VNC 时,强烈建议 使用 SSH 隧道加密通信。
什么是 SSH 隧道?
SSH 隧道利用 SSH 连接安全地转发特定端口。通过在 VNC 客户端和服务器之间创建加密的“通道”,可降低 VNC 本身的安全风险。
如何配置 SSH 隧道(本地端口转发)
以下示例演示如何创建 SSH 隧道,以 Windows 客户端为例。
在 Windows 上使用 PuTTY 进行 SSH 隧道
1. 安装 PuTTY
从官方网站下载并安装 PuTTY(https://www.putty.org/)。
2. 输入连接详情
在 “Session” 选项卡中,填写 VNC 服务器的 IP 地址和端口 22(SSH)。
3. 配置端口转发
进入 “Connection” → “SSH” → “Tunnels”。
- 源端口 : 5901
- 目标 : localhost:5901
- 选择“Local”并点击“Add”
4. 启动 SSH 连接
点击“Open”以启动 SSH 连接。本地端口 5901 现在将安全地转发到 VNC 服务器上的端口 5901。
macOS / Linux 上的 SSH 隧道
在终端中运行以下命令:
ssh -L 5901:localhost:5901 username@server-ip
示例:
ssh -L 5901:localhost:5901 naoya@192.168.1.100
连接后,打开您的 VNC 客户端并使用以下方式连接:
localhost:5901
连接时的注意事项
- 防火墙设置 : 端口 22 (SSH) 必须开放。
- VNC 查看器输入 : 使用
localhost:5901,而不是服务器的 IP 地址。
使用 SSH 隧道的益处
| Item | Description |
|---|---|
| Encrypted communication | Protects VNC traffic via secure SSH encryption |
| Simplified firewall rules | No need to expose VNC ports externally |
| Connection logging | SSH logs enable monitoring of access attempts |
通过使用 SSH 隧道,即使通过互联网也可以安全访问 VNC。这是公开可访问服务器的基本配置。
9. 常见问题和解决方案
问题 1: 连接后出现黑色或灰色屏幕
原因:
~/.vnc/xstartup文件中的错误- 桌面会话未正确启动
解决方案:
- 验证
~/.vnc/xstartup的内容,例如 (Xfce):#!/bin/sh xrdb $HOME/.Xresources startxfce4 &
- 确保文件可执行:
chmod +x ~/.vnc/xstartup
- 重启 VNC 会话:
vncserver -kill :1 vncserver :1
问题 2: 日文输入无法工作
原因:
- fcitx 或 Mozc 未运行
- 环境变量未正确设置
解决方案:
- 确认
.xprofile或.xsession中存在以下条目:export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS="@im=fcitx"
- 确保
~/.vnc/xstartup中包含fcitx &:fcitx &
- 重启 VNC 会话,并在 fcitx 配置工具中确认 Mozc 已启用。
问题 3: VNC 连接不稳定或延迟高
原因:
- 网络带宽不足
- 分辨率或颜色深度设置过高
解决方案:
- 在启动 VNC 时降低分辨率或颜色深度:
vncserver :1 -geometry 1024x768 -depth 16
- 使用 SSH 隧道来提高稳定性和安全性
- 如果可用,在 VNC 客户端中启用优化设置
问题 4: VNC 连接成功但未出现登录屏幕
原因:
- GUI 会话未正确运行
- VNC 未使用显示管理器
解决方案:
VNC 独立于系统 X 服务器运行,因此不会显示标准的 Ubuntu 登录屏幕(如 GDM)。这是预期行为。显示的会话由 .vnc/xstartup 定义。
如果您需要传统的登录屏幕或多用户登录处理,请考虑使用 RDP (xrdp) 而非 VNC。
问题 5: 无法启动 VNC 会话或访问被拒绝
原因:
- 服务文件配置不正确
- 过时的 PID 文件导致冲突
解决方案:
- 完全停止 VNC 会话:
vncserver -kill :1
- 删除
.vnc目录中不必要的.pid或.log文件:rm ~/.vnc/*.pid rm ~/.vnc/*.log
- 重新启动会话:
vncserver :1
附加提示
- 检查
~/.vnc/*.log中的日志以获取故障排除线索。 - 对于多个用户,使用不同的显示编号启动 VNC(例如 :2、:3)。
10. 总结
设置过程回顾
. 先决条件和准备 确认 Ubuntu 版本、桌面环境和 SSH 访问
桌面环境安装 安装轻量且稳定的 GUI,例如 Xfce 或 MATE
TigerVNC 配置 使用 TigerVNC 以获得稳定性,并配置会话编号和分辨率
自动启动 将 VNC 注册为 systemd 服务,以在重启后恢复会话
客户端连接方式 使用 RealVNC Viewer 或 TigerVNC Viewer 并指定正确的端口进行连接
日文输入设置 安装 fcitx-mozc 并配置环境变量以实现完整支持
SSH 隧道 加密通信以降低 VNC 的安全风险
故障排除 为常见问题提供实用解决方案
未来的运营考虑
配置完成后,VNC 环境可以让你 几乎像本地一样操作 Ubuntu。它特别适用于以下场景:
- 通过 GUI 操作 VPS 或基于云的 Ubuntu 系统
- 在团队成员之间共享环境(使用不同的显示编号)
- 帮助初学者通过 GUI 学习 Linux,而不仅仅是命令行
然而,尽管 VNC 轻量且便利,在多媒体工作负载或安全要求严格的环境中仍需谨慎使用。在此类情况下,xrdp 或 NoMachine 等替代方案可能值得考虑。
最后说明
虽然在 Ubuntu 上设置 VNC 起初看起来较为复杂,只要仔细按照每一步操作,完全可以实现。我们希望本指南能帮助你构建一个实用且舒适的 Ubuntu 远程桌面环境。
如果在设置过程中遇到任何问题,欢迎通过评论或社交媒体与我们联系。祝你的 Ubuntu 使用体验更加高效愉快。



