📌 封面引言
日常办公/学习中,你是否遇到过「Ubuntu 主机无显示器无法远程」「跨网控制卡顿」「配置复杂踩坑无数」的问题?无需公网 IP、无需端口映射、无需付费工具,本文手把手教你搭建一套免费、稳定、流畅的远程桌面方案——用 Tailscale 穿透内网,x11vnc 共享桌面,实现 Mac 随时随地控制 Ubuntu 桌面版,拔掉显示器也能丝滑操作,新手也能零失败复刻,收藏这一篇就够了!
前言
本文记录一套稳定、免费、无公网 IP、跨网可用的远程桌面方案:使用 Tailscale 做内网穿透 + x11vnc 共享桌面,实现 Mac 随时随地控制 Ubuntu 桌面版,拔掉显示器也能流畅远程。
一、方案核心原理
-
服务端(Ubuntu 桌面):x11vnc 提供 VNC 桌面共享,支持密码验证、开机自启
-
客户端(Mac):RealVNC Viewer 纯客户端,仅用于连接远程桌面
-
网络层:Tailscale 组建虚拟局域网,实现公司 / 家庭跨网直连,无需端口映射、无需公网 IP
-
最终效果:Ubuntu 开机自动登录 → x11vnc 后台自启 → Mac 一键直连
二、Ubuntu 服务端完整配置
1. 基础环境配置
1.1 安装并初始化 Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
登录 Tailscale 账号后,记录本机的 Tailscale 内网 IP(格式示例:100.x.x.x)。
1.2 关闭 Wayland(x11vnc 必需)
x11vnc 不支持 Wayland,必须切换为 X11:
sudo nano /etc/gdm3/custom.conf
找到并取消注释:
WaylandEnable=false
重启桌面服务生效:
sudo systemctl restart gdm3
2. 安装 x11vnc 并设置独立密码
2.1 安装 x11vnc
sudo apt update && sudo apt install x11vnc -y
2.2 创建系统级密码文件(更安全、适合博客规范写法)
sudo mkdir -p /etc/x11vnc
sudo x11vnc -storepasswd /etc/x11vnc/passwd
输入两次密码,输入时终端不显示,属于正常安全机制
权限加固(防止被非法读取):
sudo chmod 600 /etc/x11vnc/passwd
sudo chown root:root /etc/x11vnc/passwd
3. 配置开机自启(Systemd 服务)
创建服务文件:
sudo nano /etc/systemd/system/x11vnc.service
粘贴标准稳定配置:
[Unit]
Description=x11vnc – VNC Server
After=display-manager.service network.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -display :0 -forever -shared -rfbauth /etc/x11vnc/passwd -rfbport 5900 -noxdamage
User=root
Restart=on-failure
RestartSec=5
Environment="DISPLAY=:0"
[Install]
WantedBy=graphical.target
重载并启用服务:
sudo systemctl daemon-reload
sudo systemctl enable x11vnc
sudo systemctl start x11vnc
检查状态:
sudo systemctl status x11vnc
出现 active (running) 即为配置成功。
4. 开启自动登录(无显示器必备)
sudo nano /etc/gdm3/custom.conf
在 [daemon] 区域修改为:
AutomaticLoginEnable=true
AutomaticLogin=你的用户名
WaylandEnable=false
重启生效:
sudo reboot
5. 防火墙(可选)
Tailscale 局域网环境可忽略:
sudo ufw allow 5900/tcp
sudo ufw reload
三、Mac 客户端配置
1. 安装必备软件
-
安装 Tailscale(与 Ubuntu 登录同一账号)
-
安装 RealVNC Viewer(仅安装客户端,不要安装 Server 版)
2. 关闭 VNC 代理(避免卡顿、连接失败)
打开 VNC Viewer → 偏好设置:
-
Proxy → 选择 Do not use a proxy
-
Connections → 勾选 Allow direct connections
3. 连接远程桌面
地址格式:
你的Ubuntu内网IP:5900
输入之前设置的 VNC 密码,即可进入桌面。
四、标准装机复刻流程(零失败顺序)
安装 Ubuntu 桌面版
安装 Tailscale 并登录
关闭 Wayland
安装 x11vnc 并设置系统密码
配置 systemd 开机自启
开启自动登录
重启验证
Mac 安装客户端并连接
五、高频问题避坑表
| 连接被拒绝 | 密码路径错误 / 服务未启动 | 使用系统绝对密码路径,检查服务状态 |
| 服务启动失败 | 缺少 DISPLAY 环境变量 | 服务文件添加 Environment="DISPLAY=:0" |
| 黑屏 / 无法启动 | Ubuntu 默认使用 Wayland | 强制关闭 Wayland,使用 X11 |
| 连接极卡 | VNC 走云代理 | 关闭代理,使用 Tailscale 直连 |
| 无显示器无法连接 | 未登录桌面无画面 | 开启自动登录 |
| SSH 隧道复杂卡顿 | 没必要用隧道 | 直接使用 Tailscale 内网 IP 直连 |
六、日常使用说明
✅ Ubuntu 重启后
开机 → 自动登录 → x11vnc 自启 → Tailscale 联网全程无需任何操作。
✅ Mac 连接方式
打开 VNC Viewer → 输入内网 IP:5900 → 输入密码 → 直接控制。
七、极简软件清单(无冗余、无冲突)
必须保留
-
Ubuntu:x11vnc、Tailscale
-
Mac:RealVNC Viewer、Tailscale
绝不建议安装
-
Ubuntu:RealVNC Server、tigervnc、tightvnc
-
Mac:RealVNC Server、向日葵、TeamViewer 等重复远程工具
八、配置一键验证脚本
# 检查 x11vnc 服务状态
sudo systemctl status x11vnc –no-pager
# 检查 5900 端口是否监听
ss -tuln | grep 5900
# 检查 Tailscale 在线状态
tailscale status
# 检查自动登录是否开启
grep AutomaticLogin /etc/gdm3/custom.conf
九、额外优化(无显示器流畅方案)
如果你经常拔掉显示器使用,可安装虚拟显示器,避免 CPU 软渲染卡顿:
步骤 1:正确、可用的方案:安装 vdummy 虚拟显示器
# 1. 更新软件源(确保能下载到所需包)
sudo apt update
# 2. 安装虚拟显示器驱动(核心,让系统识别虚拟屏幕)
sudo apt install xserver-xorg-video-dummy -y
步骤 2:配置虚拟显示器(关键一步)
创建并修改配置文件,让系统识别虚拟屏幕,具体操作:
# 打开配置文件
sudo nano /etc/X11/xorg.conf.d/20-dummy-monitor.conf
粘贴以下内容(直接复制即可,无需修改):
Section "Device"
Identifier "DummyDevice"
Driver "dummy"
Option "IgnoreEDID" "true"
EndSection
Section "Screen"
Identifier "DummyScreen"
Device "DummyDevice"
Monitor "DummyMonitor"
DefaultDepth 24
SubSection "Display"
Modes "1920×1080"
EndSubSection
EndSection
Section "Monitor"
Identifier "DummyMonitor"
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 3200 1080 1083 1088 1120 -hsync +vsync
EndSection
步骤 3:重启 x11vnc 服务,应用配置
# 重启服务,让虚拟显示器生效
sudo systemctl restart x11vnc
# 验证服务是否正常(可选)
sudo systemctl status x11vnc
📝 结尾总结(升华价值,引导互动)
本文从零到一,完整实现了 Mac 跨网远程控制 Ubuntu 桌面的方案,核心优势在于「免费、稳定、无公网依赖、无显示器也能用」——无需复杂的端口映射,无需付费的远程工具,仅用 Tailscale + x11vnc 就搞定所有需求,不管是办公场景还是学习场景,都能满足日常远程控制的需求。
整个配置过程全程标准化,新手可按步骤零失败复刻,遇到问题可对照「避坑表」快速解决;后续如需优化流畅度,可参考虚拟显示器配置,进一步提升远程体验。
如果本文对你有帮助,欢迎点赞收藏,也可以在评论区留言交流你的配置心得或遇到的问题,后续会持续更新远程控制相关优化技巧~


