当前位置: 首页 > news >正文

Apache Guacamole 安装及配置VNC远程桌面控制

文章目录

  • 官网
  • 简介
    • 支持多种协议
    • 无插件浏览器访问
    • 配置和管理
    • 应用场景
  • Podman 部署 Apache Guacamole
    • 拉取 docker 镜像
    • docker-compose.yml
    • 部署 PostgreSQL
    • 生成 initdb.sql 脚本
    • 部署 guacamole
  • Guacamole 基本用法
    • 配置 VNC 连接
  • Mac 电脑开启自带的 VNC 服务

官网

  • https://guacamole.apache.org/

简介

Apache Guacamole 是一个开源的远程桌面网关,可以通过浏览器访问各种远程桌面协议。它由 Apache 软件基金会维护,主要功能是提供一个无需客户端插件的 Web 访问解决方案。

支持多种协议

  • VNC(Virtual Network Computing): 用于远程控制计算机的协议。
  • RDP(Remote Desktop Protocol): 微软的远程桌面协议。
  • SSH(Secure Shell): 用于安全地远程登录和管理计算机的协议。

无插件浏览器访问

用户可以通过现代 Web 浏览器(如 Chrome、Firefox、Edge)访问远程计算机,无需安装额外的客户端插件或软件。

配置和管理

通过 Web 界面进行用户管理、配置远程连接和设置访问权限。
可以通过配置文件和数据库进行更细粒度的控制。

应用场景

  • 远程工作: 允许员工在不同的地点访问公司内部的计算机和系统。
  • 技术支持: 支持 IT 人员远程管理和排除故障。
  • 教育和培训: 提供远程访问实验环境或教学资源。

Podman 部署 Apache Guacamole

  • 镜像:https://hub.docker.com/r/guacamole/guacamole

注意: Podman 是 Docker 替代工具;操作命令兼容,示例中的 podman 命令可以直接替换为 docker;Podman 的安装与使用请阅读 《安装 podman 与 podman-compose》 文章。

  • 启动 podman 虚拟机(Mac环境需要启动虚拟才能正常使用 Podman)
podman machine start podman-vm

拉取 docker 镜像

podman pull guacamole/guacamole
podman pull guacamole/guacd
podman pull postgres:16
# 或
docker pull guacamole/guacamole
docker pull guacamole/guacd
docker pull postgres:16

docker-compose.yml

version: '3'
services:guacamole:image: guacamole/guacamolecontainer_name: guacamoleports:- '8080:8080'environment:GUACD_HOSTNAME: guacdGUACD_PORT: 4822# 配置 MySQL 数据库# MYSQL_HOSTNAME: 192.168.0.217# MYSQL_PORT: 3306# MYSQL_DATABASE: 'guacamole_db'# MYSQL_USER: 'zyuser'# MYSQL_PASSWORD: 'Lkm##2021'# 配置 PostgreSQL 数据库POSTGRESQL_HOSTNAME: postgresPOSTGRESQL_PORT: 5432POSTGRES_DATABASE: 'guacamole_db'POSTGRES_USER: 'root'POSTGRES_PASSWORD: '4NuMDwIzp05BdKp7Bdmf'depends_on:- guacdguacd:image: guacamole/guacdcontainer_name: guacdports:- '4822:4822'postgres:image: postgres:16container_name: postgres# 容器设置为特权模式privileged: true# restart: alwaysports:- '5432:5432'environment:# 创建具有超级用户权限的指定用户和同名的数据库POSTGRES_USER: 'root'POSTGRES_PASSWORD: '4NuMDwIzp05BdKp7Bdmf'# 如果未指定,则将POSTGRES_USER使用的值。POSTGRES_DB: 'guacamole_db'# 默认为/var/lib/postgresql/dataPGDATA: /var/lib/postgresql/datavolumes:- /etc/localtime:/etc/localtime- ./postgres/data:/var/lib/postgresql/data

部署 PostgreSQL

# 数据存在缩主机上
mkdir postgres/data
# 执行部署命令
podman-compose up -d postgres

生成 initdb.sql 脚本

注: 根据自己的需求生成对应的数据库初始化 SQL 脚本。本章示例采用 PostgreSQL

  • 生成 PostgreSQL 初始化 SQL 脚本
podman run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgresql > initdb.sql
  • 生成 MySQL 初始化 SQL 脚本
podman run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
  • 连接 PostgreSQL 数据库,选择 guacamole_db 库 执行 initdb.sql 脚本初始化数据库。

在这里插入图片描述

  • 或者进入容器内执行 guacamole_db 数据库初始化。
# 将 initdb.sql 复制到容器内
podman cp initdb.sql postgres:/
# 进入 postgres 容器内
podman exec -it postgres /bin/bash
# 执行 initdb.sql
psql -U root -d guacamole_db -f initdb.sql

部署 guacamole

podman-compose up -d guacamole

Guacamole 基本用法

  • http://127.0.0.1:8080/guacamole/#/

注: Guacamole 默认登录账号/密码 guacadmin/guacadmin

在这里插入图片描述

配置 VNC 连接

注意: VNC 只能连接与 Guacamole 服务同一个局域网 的电脑。外网访问需要为 Guacamole 配置域名进行访问。

  • Nginx 配置
location /guacamole/ {proxy_set_header X-Real_IP $remote_addr;proxy_set_header Host $host;proxy_set_header X_Forward_For $proxy_add_x_forwarded_for;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_pass http://127.0.0.1:8080/guacamole/;
}
  • 进入设置页面添加连接

在这里插入图片描述

  • 返回首页点击连接

在这里插入图片描述

  • 连接的是本人 MacBook 电脑

在这里插入图片描述

  • 手机上效果

在这里插入图片描述

Mac 电脑开启自带的 VNC 服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一个自动登入校园网脚本简单案例
  • 自然语言处理系列五十七》关键词提取和文本摘要》文本摘要介绍及相关算法
  • 手机投屏到电脑怎么弄?
  • LeetCode: 2552. 统计上升四元组 动态规划 时间复杂度O(n*n)
  • OPENAIGC开发者大赛企业组金奖 | 句子互动,RPA+AI,打造大模型驱动的领先数字员工
  • 请解释Java中的深拷贝和浅拷贝的区别。什么是Java中的代理模式?它有什么作用?
  • 用Python实现阿拉伯数字转换成中国汉字
  • 怎样将vue项目 部署在ngixn的子目录下
  • C++——list常见函数的使用和模拟实现(2)
  • Spring Boot实现大文件分片下载
  • 内网渗透—横向移动非约束委派约束委派
  • 深度学习每周学习总结N9:transformer复现
  • 基于OMS构建OceanBase容灾双活架构的实践
  • 深入理解Elasticsearch的`_source`字段与索引优化
  • [C#学习笔记]LINQ
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【391天】每日项目总结系列128(2018.03.03)
  • 10个最佳ES6特性 ES7与ES8的特性
  • Codepen 每日精选(2018-3-25)
  • HTTP中GET与POST的区别 99%的错误认识
  • iOS 颜色设置看我就够了
  • IP路由与转发
  • Java 多线程编程之:notify 和 wait 用法
  • java8-模拟hadoop
  • jQuery(一)
  • js如何打印object对象
  • js写一个简单的选项卡
  • Nacos系列:Nacos的Java SDK使用
  • nfs客户端进程变D,延伸linux的lock
  • Redis学习笔记 - pipline(流水线、管道)
  • Sublime Text 2/3 绑定Eclipse快捷键
  • vue中实现单选
  • 编写符合Python风格的对象
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 学习JavaScript数据结构与算法 — 树
  • 用mpvue开发微信小程序
  • ​如何使用QGIS制作三维建筑
  • ​学习一下,什么是预包装食品?​
  • # 达梦数据库知识点
  • #{} 和 ${}区别
  • #APPINVENTOR学习记录
  • #define 用法
  • #etcd#安装时出错
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (12)Linux 常见的三种进程状态
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (三)docker:Dockerfile构建容器运行jar包
  • (四)Controller接口控制器详解(三)
  • (一)为什么要选择C++
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .NET C# 配置 Options
  • .NET NPOI导出Excel详解