项目简介

这是一个基于 Ubuntu GDM 自动登录功能的远程桌面访问解决方案。项目通过配置系统在用户登录时自动启动 x11VNC 和 noVNC 服务,实现在浏览器中远程访问 Ubuntu 桌面环境的功能。

功能特点

  • ✅ 全自动部署:一键安装配置所有依赖和服务
  • ✅ 浏览器访问:无需安装客户端,通过浏览器即可远程访问
  • ✅ 安全加密:支持 VNC 密码验证
  • ✅ 自动启动:利用 GDM 自启动机制,开机即用
  • ✅ 自适应网络:自动获取本机 IP 地址
  • ✅ 资源清理:自动终止已有进程,避免端口冲突

系统要求

  • 操作系统: Ubuntu 20.04/22.04/24.04 (支持 GDM 的 Ubuntu 版本)
  • 桌面环境: GNOME (默认桌面环境)
  • 内存: 至少 2GB RAM
  • 存储: 至少 1GB 可用空间

快速开始

1. 下载项目文件

# 克隆项目或下载所有脚本文件到同一目录
mkdir -p autostart-novnc
cd autostart-novnc

2. 运行配置脚本

# 给予执行权限并运行
chmod +x install.sh
./install.sh

脚本将执行以下操作:

  • 安装 x11vnc 和 novnc 软件包
  • 创建 VNC 密码文件(会提示设置密码)
  • 设置脚本执行权限
  • 创建必要的目录结构
  • 复制配置文件到正确位置

3. 配置 GDM 自动登录

# 编辑 GDM 自动登录配置
sudo nano /etc/gdm3/custom.conf

取消注释并修改以下内容:

[daemon]
# 启用自动登录
AutomaticLoginEnable = true
AutomaticLogin = 你的用户名

[security]
AllowRoot = false

[xdmcp]

[chooser]

[debug]

4. 重启系统

# 重启系统使配置生效
sudo reboot

访问方式

1. 获取本机 IP 地址

# 在目标机器上执行
hostname -I | awk '{print $1}'

2. 浏览器访问

在浏览器中访问:

http://[你的IP地址]:6080/vnc.html

示例:

http://192.168.1.100:6080/vnc.html

文件结构说明

autostart-novnc/
├── install.sh          # 安装配置脚本
├── uninstall.sh          # 卸载脚本(不卸载软件包)
├── first-login-lock.desktop # 锁屏自启动配置
├── first-login-lock.sh      # 锁屏脚本
├── novnc.desktop           # noVNC 自启动配置
├── novnc-start.sh          # noVNC 启动脚本
├── x11vnc.desktop          # x11vnc 自启动配置
└── x11vnc-start.sh         # x11vnc 启动脚本

脚本功能详解

1. install.sh

主配置脚本,负责:

  • 安装必要软件包
  • 创建 VNC 密码
  • 设置文件权限
  • 部署配置文件
2. x11vnc-start.sh

启动 x11vnc 服务,监听 5900 端口:

# 终止可能存在的旧进程
pkill -f "x11vnc.*5900"

# 启动 x11vnc 服务
x11vnc -auth guess -forever -loop -noxdamage -repeat \
       -rfbauth ~/.vnc/passwd -rfbport 5900 -shared
3. novnc-start.sh

启动 noVNC 代理,将 5900 端口转发到 6080 端口:

# 终止旧进程
pkill -f "websockify.*5900"

# 启动 websockify 代理
websockify --web /usr/share/novnc/ 6080 \
           $(hostname -I | awk '{print $1}'):5900
4. first-login-lock.sh

自动锁屏脚本,确保登录后桌面安全:

#!/bin/bash
# 等待桌面环境就绪
sleep 5
# 执行锁屏
xdg-screensaver lock

端口说明

端口 服务 说明
5900 x11vnc VNC 协议默认端口
6080 noVNC WebSocket 代理端口

安全注意事项

1. 密码安全

  • 运行配置脚本时会提示设置 VNC 密码
  • 密码保存在 ~/.vnc/passwd 文件中
  • 建议使用强密码并定期更换

2. 网络访问控制

# 如果需要限制访问 IP,可以使用防火墙
sudo ufw allow from 192.168.1.0/24 to any port 6080
sudo ufw allow from 192.168.1.0/24 to any port 5900

3. 禁用服务

# 临时禁用自启动
mv ~/.config/autostart/x11vnc.desktop ~/.config/autostart/x11vnc.desktop.disabled
mv ~/.config/autostart/novnc.desktop ~/.config/autostart/novnc.desktop.disabled

# 停止正在运行的服务
pkill -f "x11vnc.*5900"
pkill -f "websockify.*5900"

故障排除

1. 无法访问 noVNC 页面

# 检查端口是否监听
netstat -tlnp | grep -E '(5900|6080)'

# 检查服务是否运行
ps aux | grep -E '(x11vnc|websockify)'

# 检查防火墙设置
sudo ufw status

2. 自动登录失败

# 检查 GDM 配置
sudo cat /etc/gdm3/custom.conf | grep -A2 -B2 AutomaticLogin

# 查看 GDM 日志
journalctl -u gdm -f

3. VNC 连接无画面

# 重启 x11vnc 服务
pkill x11vnc
~/.local/bin/x11vnc-start.sh

4. 修改 VNC 密码

# 重新创建密码文件
x11vnc -storepasswd ~/.vnc/passwd

# 重启服务使新密码生效
pkill x11vnc

高级配置

1. 修改监听地址

如果需要绑定到特定 IP:

# 修改 novnc-start.sh
websockify --web /usr/share/novnc/ 6080 192.168.1.100:5900

2. 启用 SSL/TLS

# 生成 SSL 证书
openssl req -x509 -nodes -newkey rsa:2048 \
  -keyout ~/.vnc/novnc.key -out ~/.vnc/novnc.crt \
  -days 365 -subj "/CN=$(hostname)"

# 修改启动参数
websockify --web /usr/share/novnc/ \
  --cert ~/.vnc/novnc.crt --key ~/.vnc/novnc.key \
  6080 localhost:5900

3. 调整性能参数

# 修改 x11vnc-start.sh 添加性能优化参数
x11vnc -auth guess -forever -loop -noxdamage \
  -repeat -rfbauth ~/.vnc/passwd -rfbport 5900 \
  -shared -ncache 10 -tightfilexfer -nodpms

卸载指南

chmod +x uninstall.sh
./uninstall.sh

常见问题解答

Q1: 这个方案安全吗?

A: 方案使用 VNC 密码保护,建议在受信任的网络环境中使用。对于生产环境,建议启用 SSL 加密和防火墙限制。

Q2: 支持多用户同时访问吗?

A: 是的,x11vnc 使用 -shared 参数支持多用户同时连接。

Q3: 会影响本地显示性能吗?

A: 会有轻微影响,因为 x11vnc 需要捕获屏幕内容。建议在硬件性能足够的机器上使用。

Q4: 如何更改访问端口?

A: 修改脚本中的端口号并确保防火墙规则相应更新。

Q5: 支持 Wayland 吗?

A: 目前只支持 X11 会话,不支持 Wayland。

贡献与反馈

如果你发现任何问题或有改进建议:

  1. 提交 Issue 描述问题
  2. Fork 项目并提交 Pull Request
  3. 联系维护者获取帮助

许可证

本项目基于 MIT 许可证开源,详情请见 LICENSE 文件。

致谢

项目仓库:https://gitee.com/nanfangxiaogui/autostartnovnc.git

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐