guacamole硬部署-政务信创,硬部为王

前言

guacamole + coturn实现vnc远程桌面实时语音在政务项目已经落地了,现场交付人员都在回来的路上了。现在可以分享guacamole的硬部署了,局方是专网,且是信创环境,docker支持看运气。

下载

官网下载,需要自己编译,下载地址:https://guacamole.apache.org/

解压

bash 复制代码
tar -xzf guacamole-server-1.6.0.tar.gz

编译

bash 复制代码
./configure --with-init-dir=/etc/init.d

注意编译一定要先安装准备相关支持,比如:libjpeg、vncviewer等等。

我们是走vnc协议的远程,所以我这里要安装vnc的支持。

编译报错

1、configure: error: "libjpeg is required for writing jpeg messages"

处理:

bash 复制代码
yum install libjpeg-devel

安装

bash 复制代码
make
sudo make install
sudo ldconfig

启动 guacd 服务

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable guacd
sudo systemctl start guacd

安装jdk(如果有可以跳过)

bash 复制代码
sudo yum install -y java-11-openjdk-devel

安装tomcat

bash 复制代码
sudo yum install -y tomcat tomcat-admin-webapps tomcat-webapps

启动 Tomcat

bash 复制代码
sudo systemctl enable tomcat
sudo systemctl start tomcat

创建目录

bash 复制代码
sudo mkdir -p /etc/guacamole/{extensions,lib}

部署到 Tomcat

bash 复制代码
sudo cp guacamole-1.6.0.war /var/lib/tomcat/webapps/guacamole.war

重启 Tomcat

bash 复制代码
sudo systemctl restart tomcat
  • guacamole官网上下载gz

  • 上传到服务器

  • 解压文件

要用mysql-connector-j-8.2.0.jar

bash 复制代码
tar -xzf mysql-connector-java-8.0.33.tar.gz
tar -xzf guacamole-auth-jdbc-1.6.0.tar.gz

复制 MySQL JDBC 驱动

bash 复制代码
sudo cp mysql-connector-j-8.2.0.jar /etc/guacamole/lib/

复制 Guacamole JDBC 认证扩展

bash 复制代码
sudo cp guacamole-auth-jdbc-1.5.0/mysql/guacamole-auth-jdbc-mysql-1.6.0.jar /etc/guacamole/extensions/

配置 Guacamole 使用 MySQL 认证

  • 创建 Guacamole 配置文件
bash 复制代码
sudo view /etc/guacamole/guacamole.properties
  • 增加配置
yaml 复制代码
# Guacd 配置
	guacd-hostname: localhost
	guacd-port: 4822
# MySQL 认证配置
	mysql-hostname: localhost
	mysql-port: 3306
	mysql-database: guacamole_db
	mysql-username: guacamole_user
	mysql-password: your_password_here
	# webrct支持
enable-websocket: true
enable-clipboard-integration: true
guacamole.websocket.heartbeat.enabled=false
guacamole.websocket.timeout=60000
webrtc-enable-mic: true
# 对接coturn配置
webrtc-turn-server: turn:localhost:3478
webrtc-turn-username: coturn认证用户
webrtc-turn-password: coturn认证密码
webrtc-turn-tls: false

认证提供程序(高版本不需要配置 > 1.6.0)

auth-provider: net.sourceforge.guacamole.net.auth.mysql.MySQLAuthenticationProvider

  • guacd服务端配置
bash 复制代码
sudo view /etc/guacamole/guacd.conf
  • 增加配置
yaml 复制代码
[server]
bind_host = 0.0.0.0
bind_port = 4822

设置正确的所有权

bash 复制代码
sudo chown -R tomcat:tomcat /etc/guacamole
sudo chmod -R 755 /etc/guacamole

确保 Tomcat 可以访问 JDBC 驱动

bash 复制代码
sudo chown tomcat:tomcat /etc/guacamole/lib/mysql-connector-j-8.2.0.jar
sudo chown tomcat:tomcat /etc/guacamole/extensions/guacamole-auth-jdbc-mysql-1.6.0.jar

重启服务

bash 复制代码
sudo systemctl restart guacd  (等同 /etc/init.d/guacd restart)
sudo systemctl restart tomcat

检查状态

bash 复制代码
sudo systemctl status guacd
sudo systemctl status tomcat

查看tomcat日志

bash 复制代码
tail -fn 1000 /var/log/tomcat/catalina.2025-11-05.log 

查看日志:guacamole/tomcat/guacd

bash 复制代码
tail -fn 1000  /var/log/messages

查看服务

bash 复制代码
ps -ef | grep guacd

得到pid

bash 复制代码
netstat -lntp | grep pid号

看到的端口具体端口

PS:

注意如果要支持VNC协议,一定要先安装好VNC协议支持,在编译结果里要看到"vncview----------yes",否则装上了,也不能走vnc协议连上远程桌面。

知识科普

一、Guacamole 是什么?

Apache Guacamole 是一个开源、无客户端的远程桌面网关。它的核心创新在于,用户无需在本地设备上安装任何客户端软件或插件,仅通过一个标准的 Web 浏览器 就能远程访问和管理其他计算机(如 Windows、Linux、Mac 等)。

"无客户端"指的是用户的设备上不需要安装任何专用软件,所有复杂的后端处理都在 Guacamole 服务器上完成。

二、核心特性与优势

无客户端访问

  • 最大优势:用户可以在任何地方、使用任何设备(包括 Chromebook、iPad、智能手机甚至公共电脑),只要有一个现代浏览器(如 Chrome、Firefox、Safari),就能安全地连接到自己的工作站或服务器。

  • 消除了软件安装、配置和兼容性的麻烦。

基于 Web 的访问

  • 提供统一的 Web 门户,所有远程连接都在一个界面中管理。

  • 用户体验一致,易于上手。

支持多种协议

  • RDP: 用于连接 Windows 机器。

  • VNC: 用于连接 Linux、Unix 或其它系统的图形桌面。

  • SSH: 用于安全的命令行访问 Linux/Unix 服务器。

  • Telnet: 较老的非加密命令行协议。

  • Kubernetes: 可以直接连接到容器的终端。

Guacamole 本身并不直接实现远程桌面协议,而是作为一个网关,将多种后端协议转换成 Web 友好的方式。它原生支持:

强大的安全模型

  • 所有连接都终止于 Guacamole 服务器。用户只能看到在浏览器中渲染的桌面图像,而不会直接连接到目标机器,这提供了一个天然的隔离层。

  • 支持与 LDAP、Active Directory、数据库 等后端进行身份验证集成。

  • 可以配置细粒度的权限控制(如哪些用户可以连接哪些主机、是否允许文件传输、剪切板共享等)。

  • 支持通过 TLS/SSL 加密所有浏览器与 Guacamole 服务器之间的通信。

会话连接与共享

  • 支持会话连接,如果一个连接意外断开,用户可以重新连接并回到之前的会话中。

  • 管理员可以演示或提供技术支持,实现桌面共享。

三、工作原理与架构

Guacamole 的架构主要由两部分组成:

Guacamole 客户端:

  • 这不是一个需要安装的软件,而是一段运行在用户浏览器中的 JavaScript 代码。

  • 它使用 WebSocket 协议与 Guacamole 服务器进行实时通信。

  • 它的职责是接收服务器发送的远程桌面显示指令(通过 Guacamole 协议),并在浏览器的 HTML5 Canvas 元素上渲染出桌面图像。同时,它将用户的键盘、鼠标输入发送回服务器。

Guacamole 服务器(guacd):

  • Guacamole Web 应用: 一个 Java Servlets 应用,负责提供 Web 界面、用户认证和授权。

  • guacd 守护进程: 一个用 C 语言编写的、轻量级的代理。它负责与后端的目标机器建立实际的 RDP、VNC、SSH 等连接。

这是核心后端服务,通常由两个组件构成:

工作流程:
  • 用户在 Web 浏览器中登录 Guacamole 门户。

  • 用户点击一个连接。

  • Guacamole Web 应用通知

  • guacd

  • 建立到目标机器的连接。

  • guacd

    使用对应的协议(如 RDP)连接到目标机器。

  • guacd

    将远程桌面的图形数据转换为高效的 Guacamole 指令,并通过 WebSocket 发送给浏览器中的客户端。

  • 浏览器中的客户端根据指令渲染出桌面。

这个架构的关键在于 Guacamole 协议,它是一个高效、自定义的协议,专门用于在服务器和 Web 客户端之间传输远程桌面数据。

相关推荐
Splashtop高性能远程控制软件2 天前
行业观察 | 微软修复63个漏洞,包含零日与CVSS 9.8关键漏洞
运维·安全·microsoft·自动化·远程桌面·splashtop
Java小学生丶11 天前
非常简单的基于 Docker 自建 RustDesk 远程桌面教程
docker·远程桌面·异地组网
超越自己16 天前
远程连接银河麒麟服务器-xrdp方式
linux·运维·服务器·远程桌面·银河麒麟
eguid_125 天前
【从零开始开发远程桌面连接控制工具】01-项目概述与架构设计
java·远程连接·远程控制·远程桌面·vnc·teamviewer
未来之窗软件服务1 个月前
操作系统应用开发(二十七)网页访问远程桌面—东方仙盟筑基期
远程桌面·rustdesk·仙盟创梦ide·东方仙盟
未来之窗软件服务1 个月前
操作系统应用开发(二十三)RustDesk ng反向代理—东方仙盟筑基期
服务器·远程桌面·仙盟创梦ide·东方仙盟·rustdek
未来之窗软件服务1 个月前
操作系统应用开发(二十五)RustDesk 502错误—东方仙盟筑基期
网络协议·远程桌面·仙盟创梦ide·东方仙盟·rustdek
未来之窗软件服务1 个月前
操作系统应用开发(二十四)RustDesk 404错误—东方仙盟筑基期
服务器·远程桌面·仙盟创梦ide·东方仙盟·rustdek
一粒马豆2 个月前
flask_socketio+pyautogui实现的具有加密传输功能的极简远程桌面
python·flask·pyautogui·远程桌面·flask_socketio