前言

本文介绍一款轻量级的开源堡垒机平台: Next Terminal,假如你是个人开发者,刚好手上有些几台或者十几台服务器、NAS需要统一管理,那么恭喜你,这个平台非常适合你。

简介

想必经常玩服务器的都了解过堡垒机,类似于跳板机,但与跳板机的侧重点不同。堡垒机的主要功能是控制和监控对内部网络的远程访问。它提供严格的访问控制、会话审计和监控等功能。而跳板机更侧重于提供一个安全的中转平台,用于跳转到内部网络的其他服务器或设备。

之前我还了解过飞致云旗下开源堡垒机项目 Jump server,但由于其组件过多搭建比较复杂,而且它对于管理端的性能要求最低达到2核4G的配置,很遗憾,我的开发板配置没有达到最低要求,于是在github上一番查找,最终让我找到了 Next-terminal 项目。相比较之下 Next-terminal 更加的轻量,并且搭建更加的简单,并且功能也比较完善,满足基本的需求。当然,这是开源版本,有必要的话各位可以上企业版支持一波作者。

Next-terminal 号称下一代堡垒机,它支持多协议如 RDP、SSH、VNC等,并可以对正在进行的会话实时监控,还可以进行事后审计,包括查看日志和查看命令视频记录。

项目地址

环境要求

  • 平台: Linux、Mac
  • 硬件: 2核2G
  • 系统: Ubuntu、Centos、Debian、Mac OS

安装方法

Docker-compose安装

提示:国内用户可以使用阿里云镜像仓库

  • guacd registry.cn-beijing.aliyuncs.com/dushixiang/guacd
  • next-terminal registry.cn-beijing.aliyuncs.com/dushixiang/next-terminal

SQLite存储数据方式部署(方法一)

创建一个NextTermianl文件夹,并在文件夹下新建docker-compose.yml文件,并写入以下内容

version: '3.3'
services:
  guacd:
    image: dushixiang/guacd:latest
    volumes:
      - ./data:/usr/local/next-terminal/data
    restart:
      always
  next-terminal:
    image: dushixiang/next-terminal:latest
    environment:
      DB: sqlite
      GUACD_HOSTNAME: guacd
      GUACD_PORT: 4822
    ports:
      - "8088:8088"
    volumes:
      - /etc/localtime:/etc/localtime
      - ./data:/usr/local/next-terminal/data
    restart:
        always
# 后台启动容器
docker-compose up -d

Mysql数据存储方式部署(方法二)

创建一个NextTermianl文件下,并在文件夹下新建docker-compose.yml文件,并写入以下内容

version: '3.3'
services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: next-terminal
      MYSQL_USER: next-terminal
      MYSQL_PASSWORD: next-terminal
      MYSQL_ROOT_PASSWORD: next-terminal
   volumes:
     - ./data/mysql:/var/lib/mysql
   restart:
     always
  guacd:
    image: dushixiang/guacd:latest
    volumes:
      - ./data:/usr/local/next-terminal/data
    restart:
      always
  next-terminal:
    image: dushixiang/next-terminal:latest
    environment:
      DB: mysql
      MYSQL_HOSTNAME: mysql
      MYSQL_PORT: 3306
      MYSQL_USERNAME: next-terminal
      MYSQL_PASSWORD: next-terminal
      MYSQL_DATABASE: next-terminal
      GUACD_HOSTNAME: guacd
      GUACD_PORT: 4822
    ports:
      - "8088:8088"
    volumes:
      - /etc/localtime:/etc/localtime
      - ./data:/usr/local/next-terminal/data
    depends_on:
      - mysql
    restart:
      always
# 后台启动容器
docker-compose up -d

Docker方式安装

# 安装 guacd
docker run --restart=always --name guacd -d \
  -v /root/next-terminal/data:/usr/local/next-terminal/data \
  dushixiang/guacd:latest
# 安装 next-terminal
docker run --restart=always --name next-terminal -d \
  --link guacd \
  -p 8088:8088 \
  -v /root/next-terminal/data:/usr/local/next-terminal/data \
  -v /etc/localtime:/etc/localtime \
  -e DB=sqlite \
  -e GUACD_HOSTNAME=guacd \
  -e GUACD_PORT=4822 \
  dushixiang/next-terminal:latest \

安装完的访问8080端口即可,超管账号密码:admin/admin

环境变量

介绍一下docker-compose.yaml文件中的环境变量的作用

参数含义默认值
DB数据库类型,可选 ['sqlite','mysql']sqlite
SQLITE_FILEsqlite 数据库文件存放地址/usr/local/next-terminal/data/sqlite/next-terminal.db
MYSQL_HOSTNAMEmysql 数据库地址127.0.0.1
MYSQL_PORTmysql 数据库端口3306
MYSQL_USERNAMEmysql 数据库用户next-terminal
MYSQL_PASSWORDmysql 数据库密码next-terminal
MYSQL_DATABASEmysql 数据库名称next-terminal
SERVER_ADDR服务器监听地址0.0.0.0:8088
ENCRYPTION_KEY授权凭证和资产的密码,密钥等敏感信息加密的keynext-terminal
GUACD_HOSTNAMEGuacd 服务地址127.0.0.1
GUACD_PORTGuacd 服务监听端口4822
GUACD_RECORDING录屏文件保存目录/usr/local/next-terminal/data/recording
GUACD_DRIVE远程桌面挂载盘根目录/usr/local/next-terminal/data/drive
SSHD_ENABLE是否开启sshd服务false
SSHD_ADDRsshd服务监听的地址0.0.0.0:8089
SSHD_KEYsshd服务使用私钥路径~/.ssh/id_rsa

安装完的效果如下

资产管理
资产接入ssh连接
仪表盘
文件传输
批量下发动态指令
动态指令下发结果
指令结果
会话记录

最后修改:2023 年 12 月 10 日
做兄弟、在心中!