Ubuntu 安装 VNC 远程桌面完整指南(搭配 XFCE 桌面)

一、准备工作

  • 一台运行 Ubuntu 的服务器(可以是云服务器或本地虚拟机),拥有 root 权限或 sudo 用户。
  • 服务器已安装轻量级桌面环境(如 XFCE),若未安装,请先执行以下命令:bash复制下载sudo apt update sudo apt install xfce4 xfce4-goodies -y
  • 本地电脑(Windows / macOS / Linux)用于远程连接。

二、安装 VNC 服务器

2.1 安装 TightVNC 服务器

bash

复制

下载

sudo apt install tightvncserver -y

tightvncserver 是一个轻量且稳定的 VNC 服务器软件。


三、首次启动并设置 VNC 密码

3.1 启动 VNC 服务器(不要用 sudo)

bash

复制

下载

vncserver

首次运行会提示:

  • 设置 6~8 位密码(用于客户端连接),并确认一次。
  • 是否设置仅查看(view-only)密码?输入 n 跳过(除非你需要只读权限)。

成功启动后,终端会显示类似:

text

复制

下载

New 'X' desktop is your-hostname:1 Starting applications specified in /home/your-user/.vnc/xstartup Log file is /home/your-user/.vnc/your-hostname:1.log

其中 :1 表示第一个 VNC 会话,对应的端口为 5901(端口号 = 5900 + 显示编号)。

3.2 停止默认会话(以便修改配置文件)

初次启动会自动生成配置文件 ~/.vnc/xstartup,我们需要修改它以启动 XFCE 桌面。

bash

复制

下载

vncserver -kill :1

输出应为:Killing Xtightvnc process ID xxxx


四、配置 VNC 启动桌面(修改 xstartup)

4.1 编辑 ~/.vnc/xstartup 文件

bash

复制

下载

nano ~/.vnc/xstartup

初始内容可能是类似下面的默认脚本:

bash

复制

下载

#!/bin/sh xrdb $HOME/.Xresources xsetroot -solid grey #x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & #x-window-manager & # Fix to make GNOME work export XKL_XMODMAP_DISABLE=1 /etc/X11/Xsession

将其替换为以下内容:

bash

复制

下载

#!/bin/bash xrdb $HOME/.Xresources startxfce4 &

保存并退出(Ctrl+O,回车,Ctrl+X)。

4.2 赋予执行权限

bash

复制

下载

chmod +x ~/.vnc/xstartup


五(重要)、防火墙与云平台安全组配置

5.1 Ubuntu 防火墙(ufw)放行端口

bash

复制

下载

sudo ufw allow 5901/tcp sudo ufw reload

5.2 云平台安全组设置(至关重要!)

登录你的云服务商控制台(阿里云、腾讯云、华为云等),找到实例对应的安全组,添加入方向规则

  • 优先级:1(默认)
  • 策略:允许
  • 协议类型:TCP
  • 端口范围:5901
  • 源地址0.0.0.0/0(表示允许所有 IP 访问,用于测试;生产环境建议限制为你的本地公网 IP,如 123.123.123.123/32
  • 描述:VNC(可选)
⚠️ 易错点:源地址务必选择 CIDR 并填写 0.0.0.0/0,而不是“安全组”或“前缀列表”,否则仅允许同安全组内机器访问,导致外部连接超时。

六、重新启动 VNC 会话

bash

复制

下载

vncserver -geometry 1280x720 -depth 24

参数说明:

  • -geometry:指定分辨率(可调整为 1920x1080 等)。
  • -depth:颜色深度(24 位真彩色)。

启动后,端口 5901 应处于监听状态,可用以下命令确认:

bash

复制

下载

sudo ss -lntp | grep 5901

输出应包含 LISTEN 0 128 0.0.0.0:5901


七、从本地电脑连接

7.1 下载 VNC Viewer

7.2 安装并运行 VNC Viewer

  • 安装后打开,无需登录或注册,直接关闭弹出的登录窗口。
  • 在顶部地址栏输入:你的服务器公网IP:5901(例如 123.123.123.123:5901),回车。
  • 输入你在步骤 3.1 设置的 VNC 密码,即可进入 XFCE 桌面。

八、常见问题及解决方法

8.1 连接超时(Timed out waiting for a response)

现象:VNC Viewer 提示 “Timed out waiting for a response from the computer”。

排查步骤

  1. 检查 VNC 服务是否运行bash复制下载ps aux | grep vnc若无进程,重新启动:vncserver -geometry 1280x720 -depth 24 :1
  2. 检查端口监听bash复制下载sudo ss -lntp | grep 5901若没有输出,说明 VNC 未绑定端口,需检查服务启动情况。
  3. 检查云平台安全组
    确认入方向规则已正确添加,源地址为 0.0.0.0/0(或你的本地 IP),协议 TCP,端口 5901。
  4. 检查 Ubuntu 防火墙bash复制下载sudo ufw status若防火墙开启,确保 5901/tcp 已放行。
  5. 网络连通性测试
    在本地电脑打开命令提示符(CMD),执行:cmd复制下载telnet 你的服务器公网IP 5901
    • 如果卡住或进入黑屏:网络通,问题可能出在 VNC 服务本身。
    • 如果提示连接失败:网络不通,重点检查安全组/防火墙。

8.2 连接成功但屏幕灰色或只有一个终端

现象:输入密码后进入桌面,但只有灰色背景或一个终端窗口。

原因~/.vnc/xstartup 文件未正确配置或未赋予执行权限。

解决

  • 确认 ~/.vnc/xstartup 内容以 startxfce4 & 结尾。
  • 重新赋予权限:chmod +x ~/.vnc/xstartup
  • 杀掉会话并重启:vncserver -kill :1 然后 vncserver -geometry 1280x720 -depth 24 :1

8.3 忘记 VNC 密码

解决:直接运行 vncpasswd,按提示设置新密码即可覆盖原密码。

8.4 如何让 VNC 服务开机自动启动

可以通过 crontab 实现(以当前用户身份):

bash

复制

下载

crontab -e

添加一行:

text

复制

下载

@reboot /usr/bin/vncserver -geometry 1280x720 -depth 24 :1


九、总结

至此,你已成功在 Ubuntu 服务器上通过 VNC 搭建了远程桌面。

Read more

【2026最新公众号爬虫分享】用Python爬取公众号文章,批量下载正文并保存Excel!

【2026最新公众号爬虫分享】用Python爬取公众号文章,批量下载正文并保存Excel!

您好,我是@iFeng的小屋,一枚4年程序猿。 一、爬取目标 我发现很多做运营和数据分析的小伙伴,一直想找能批量下载公众号文章,并且能获取完整正文内容的工具。所以,这次我开发了这个公众号文章爬虫,供大家使用。 目前是源码格式,还没有封装成软件,如果想要软件的我后续开发一个软件版本的。 二、展示爬取结果 话不多说,先看成果。爬取结果包含以下字段: * 文章标题 * 文章链接(永久链接) * 发布时间 * 公众号名称 * 文章正文 所有数据自动保存为Excel文件,干净整齐,拿去即可食用! 三、原理讲解 1,登录公众平台 2,然后在首页下新的创作选择文章,点进去之后在正文添加超链接,然后账号那一行选择要爬取的公众号,接着就会出现公众号发布过的文章,如下图: 3,这里按F12查看数据来源,点击网络,刷新之后可以看到文章数据来源的数据包,那接下来就要对这个url发送请求,取我们想要的值即可。token和cookie也从这里边找。 三、爬虫代码讲解 导入库: import

By Ne0inhk

Mac新手必看:用Homebrew安装NVM管理Node.js版本(含zsh配置避坑指南)

Mac开发者必备:从零构建稳定高效的Node.js多版本开发环境 如果你刚拿到一台全新的Mac,准备投身前端或Node.js后端开发,那么搭建一个得心应手的开发环境就是你的首要任务。我见过太多新手开发者,包括几年前的我自己,在环境配置这一步就踩了无数坑——明明按照教程一步步操作,终端却总是报错command not found: nvm,或者Node版本切换不生效,项目跑不起来。这种挫败感很容易让人在起步阶段就失去信心。 实际上,在Mac上管理Node.js版本,Homebrew + NVM是目前最主流、也最被社区推荐的组合。Homebrew作为macOS上缺失的包管理器,能让你像在Linux上一样优雅地安装软件;而NVM(Node Version Manager)则是专门为Node.js设计的版本管理工具,让你可以在不同项目间无缝切换Node版本,彻底告别“这个项目需要Node 14,那个项目需要Node 18”的兼容性噩梦。 这篇文章就是为你——无论是刚接触Mac开发的在校学生,还是从Windows平台转战过来的工程师——准备的一份避坑指南。我不会只给你干巴巴的命令列表,而是

By Ne0inhk

【OpenClaw】启动报错 disconnected (1008): unauthorized: gateway token mismatch

【OpenClaw】启动报错 disconnected (1008): unauthorized: gateway token mismatch 📑 文章目录 1. 一、问题现象 2. 二、错误原因分析 3. 三、快速修复(60 秒) 4. 四、Docker 用户特别注意 5. 五、彻底修复(停止 → 清除 → 重启) 6. 六、易混淆错误辨析 7. 七、常用命令速查表 8. 八、总结 一、问题现象 OpenClaw 启动后,控制台输出以下报错信息: disconnected (1008): unauthorized: gateway token mismatch

By Ne0inhk
MySQL CRUD 核心指南:查询、插入、更新、删除全实战

MySQL CRUD 核心指南:查询、插入、更新、删除全实战

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 基础准备:创建测试表与测试数据 * 1.1 学生表(students) * 1.2 考试成绩表(exam_result) * 二. Create(插入数据) * 2.1 单行全列插入 * 2.2 多行指定列插入 * 2.3 插入冲突处理(on duplicate key update) * 2.4 替换插入(replace into) * 2.5 插入查询结果 * 三.

By Ne0inhk