xiufeigo™
Home
碎碎念 or 备忘录
Guacamole - 一个类 JMS 的 WEB 端堡垒机

Guacamole 是什么

Apache Guacamole 是一个开源的远程桌面网关项目,它允许用户通过网页浏览器安全地访问远程桌面环境,而无需在本地计算机上安装任何额外的客户端软件。Guacamole 支持多种远程桌面协议,包括但不限于:

  • RDP (Remote Desktop Protocol):微软的远程桌面协议,用于Windows系统的远程控制。

  • VNC (Virtual Network Computing):一种轻量级的远程控制协议,可用于多种操作系统。

  • SSH (Secure Shell):用于安全地远程登录到系统,通常用于类Unix系统。


Guacamole 有什么用

  1. 远程办公:员工可以在家或其他地方通过互联网访问公司内部的工作站或服务器。

  2. 技术支持:IT人员可以远程访问用户的计算机以提供帮助,无需亲自到场。

  3. 数据中心管理:管理员可以从世界任何地方访问数据中心内的服务器。

  4. 教育:学生和教师可以远程访问实验室计算机或特定的应用程序。

  5. 云服务:云提供商可以使用Guacamole让用户通过浏览器访问虚拟桌面或应用程序。


Guacamole 有什么优势

Guacamole 的优势之一是它不需要客户端安装额外的软件,只需要一个支持HTML5的现代Web浏览器即可。这使得它非常适合需要跨平台兼容性的场景。此外,Guacamole还支持多种身份验证机制,并且可以与现有的单点登录系统集成,增强了安全性。


Guacamole 安装

Guacamole 原生配置较为复杂,本人又菜不会配。因此这次采用 docker 来安装 Guacamole

安装 docker

# 因为本人的操作系统是 Alibaba Cloud Linux 3,系统默认带了 podman,使用 docker 的话需要先卸载 podman
$ yum remove podman buildah

# 添加 docker 仓库
$ yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 刷新软件源
$ yum clean all && yum makecache

# 安装 docker
$ yum install -y docker-ce docker-ce-cli containerd.io

# 安装 docker-compose
$ sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d')" /usr/local/bin/docker-compose

创建 Docker Compose 文件

# 新建程序目录
$ mkdir -p /home/xiufeigo/program/guacamole
$ cd /home/xiufeigo/program/guacamole

# 创建 docker-compose.yml
$ cat << EOF > docker-compose.yml
version: '3'

services:
  guacamole-db:
    image: mysql:8.0
    container_name: guacamole-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: guac_password  # 设置MySQL root密码
      MYSQL_DATABASE: guacamole_db        # Guacamole数据库名称
      MYSQL_USER: guacamole_user          # Guacamole数据库用户
      MYSQL_PASSWORD: guac_password       # Guacamole数据库用户密码
    volumes:
      - guac_db_data:/var/lib/mysql       # 持久化 MySQL 数据
      - ./mysql-init-scripts:/docker-entrypoint-initdb.d # 初始化SQL脚本目录
    networks:
      - guac-network

  guacd:
    image: guacamole/guacd:1.5.3
    container_name: guacamole-guacd
    restart: always
    networks:
      - guac-network

  guacamole:
    image: guacamole/guacamole:1.5.3
    container_name: guacamole
    environment:
      MYSQL_DATABASE: guacamole_db
      MYSQL_USER: guacamole_user
      MYSQL_PASSWORD: guac_password
      MYSQL_HOSTNAME: guacamole-db
      GUACD_HOSTNAME: guacd
    ports:
      - "8888:8080"  # 访问端口,将8080映射为8888
    depends_on:
      - guacd
      - guacamole-db
    networks:
      - guac-network
    volumes:
      - guac_home:/home/xiufeigo/program/uacamole/.guacamole  # 持久化 Guacamole 配置数据

volumes:
  guac_db_data:     # MySQL 数据持久化卷
  guac_home:        # Guacamole 数据持久化卷

networks:
  guac-network:

EOF

初始化 Guacamole 数据库

# 获取 mysql 建表 sql
$ docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql

启动 Guacamole 容器

$ docker-compose up -d

写入 mysql 表信息

# 复制建表 sql 到 docker 容器中
$ docker cp initdb.sql guacamole-mysql:/

# 建表
$ docker exec -it guacamole-mysql bash -c "mysql -uroot -proot_password guacamole_db < /initdb.sql"

访问 Guacamole Web 界面

在浏览器中访问 http://服务器IP:8080/guacamole,默认用户名和密码为:

  • 用户名guacadmin

  • 密码guacadmin

首次登录后,建议立即更改默认密码 or 新建管理员账号后禁用 guacadmin 账号登陆

配置远程连接

这个有手就行吧?就不用多说吧?


完全体:结合 frp 使用

此处省略 n 字,参考本人博客的「Frp 内网穿透」一文


结束!恭喜你!获得一个随身使用的堡垒机啦!

粤ICP备2022009857号-1