<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="Next Terminal | 开源 轻量 简单的堡垒机">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2023-05-28 12:51<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
Next Terminal | 开源 轻量 简单的堡垒机




官网：https://next-terminal.typesafe.cn/


演示：https://next.typesafe.cn/ 账号：test 密码：test


Github：https://github.com/dushixiang/next-terminal


Dockerhub：https://hub.docker.com/r/dushixiang/next-terminal


官方安装文档：https://next-terminal.typesafe.cn/docs/install/docker-install.html




对比




类似的开源堡垒机有 Teleport，Jumpserver，Next Terminal等等。


Teleport 安全性最好，较轻量，但是对被管理资产不透明，纳管前需要双向认证，在资产设备上需额外操作，大公司，安全性要求高的适合，有商业版本。


Jumpserver 笨重，对被管理资产透明，其他 该有的都有，有商业版本。


Next Terminal 轻量，简单，对被管理资产透明，适合个人，支持RDP、SSH、VNC、TELNET等协议。




使用docker命令安装




XML/HTML代码


    # 安装 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





默认用户名 密码 admin/admin，登录进去以后切记切记开启MFA，如果不开启MFA，一旦密码被暴力破解，不仅内网被暴露到公网，你的资产更是直接暴露，直接登录。下载 Microsoft Authenticator 可以使用MFA认证。各大应用商店都有，支持安卓和IOS。


开启MFA流程：个人中心--双因素认证--去开启--Microsoft Authenticator 扫码--输入TOTP（APP显示的授权码）建议管理员和普通用户都开启更加安全。


然后把Next Terminal的登录页透传出去了，认证之后就可以无缝管理内网资源，添加一个Windows系统作为跳板机就更方便了。也可以使用Nginx反代，可以同步本地剪切板。


docker-compose.yml 安装


提示：国内用户可以使用阿里云镜像仓库


XML/HTML代码


    guacd registry.cn-beijing.aliyuncs.com/dushixiang/guacd  

    next-terminal registry.cn-beijing.aliyuncs.com/dushixiang/next-terminal  





使用 sqlite 存储数据：


在任意位置创建文件夹 next-terminal ，然后在此文件夹下创建 docker-compose.yml 并写入如下内容




XML/HTML代码


    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:

          - &quot;8088:8088&quot;

        volumes:

          - /etc/localtime:/etc/localtime

          - ./data:/usr/local/next-terminal/data

        restart:

          always




前台启动命令




XML/HTML代码


    docker-compose up




后台启动命令




XML/HTML代码


    docker-compose up -d




使用 mysql 存储数据：


在任意位置创建文件夹 next-terminal ，然后在此文件夹下创建 docker-compose.yml 并写入如下内容：




XML/HTML代码


    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:

          - &quot;8088:8088&quot;

        volumes:

          - /etc/localtime:/etc/localtime

          - ./data:/usr/local/next-terminal/data

        depends_on:

          - mysql

        restart:

          always




前台启动命令




XML/HTML代码


    docker-compose up




后台启动命令




XML/HTML代码


    docker-compose up -d




使用外部的 mysql 存储数据


在任意位置创建文件夹 next-terminal ，然后在此文件夹下创建 docker-compose.yml 并写入如下内容：




XML/HTML代码


    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: mysql  

          # 请修改下面的 MySql 配置，需自行创建数据库和用户  

          MYSQL_HOSTNAME: mysql  

          MYSQL_PORT: 3306  

          MYSQL_USERNAME: next-terminal  

          MYSQL_PASSWORD: next-terminal  

          MYSQL_DATABASE: next-terminal  

          # 请修改上面的 MySql 配置，需自行创建数据库和用户  

          GUACD_HOSTNAME: guacd  

          GUACD_PORT: 4822  

        ports:  

          - &quot;8088:8088&quot;  

        volumes:  

          - /etc/localtime:/etc/localtime  

          - ./data:/usr/local/next-terminal/data  

        restart:  

          always  





前台启动命令




XML/HTML代码


    docker-compose up







后台启动命令




XML/HTML代码


    docker-compose up -d




开启sshd服务




以sqlite模式为例，修改 docker-compose.yml，增加 加粗 区域的配置




XML/HTML代码


    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  

          SSHD_ENABLE: &quot;true&quot;  

        ports:  

          - &quot;8088:8088&quot;  

          - &quot;8089:8089&quot;  

        volumes:  

          - /etc/localtime:/etc/localtime  

          - ./data:/usr/local/next-terminal/data  

          - ~/.ssh/id_rsa:/root/.ssh/id_rsa  

        restart:  

              always  




接下来使用 next-terminal 中的用户即可使用。 示例




XML/HTML代码


    ssh admin@127.0.0.1 -p 8089  




docker-compose 更新方式




XML/HTML代码


    docker-compose pull &amp;&amp; docker-compose restart  




其他可以参考官方说明，程序还支持原生安装，简单说也就是物理机安装。




反向代理


推荐使用 nginx 等web服务器反向代理 next-terminal 使用，一是可有效避免伪造 IP 绕过系统限制，二是开启 https 后可无缝同步系统粘贴板。


nginx 反向代理示例






XML/HTML代码


    location / {  

        proxy_pass http://127.0.0.1:8088/;  

        proxy_set_header Host      $host;  

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  

        proxy_set_header X-Real-IP $remote_addr;  

        proxy_set_header Upgrade $http_upgrade;  

        proxy_set_header Connection $http_connection;  

    }  




当然也可以用npm之类的容器设置反代，更加简单。




开源堡垒机 TELEPORT


官网：https://tp4a.com


下载：https://tp4a.com/download


安装：https://docs.tp4a.com


GitHub：https://github.com/tp4a/teleport


注：官方的docker镜像需要2个，如果使用一键安装或者在群晖爱快等非标准linux命令的设备上，可以使用二合一镜像。


Github：https://github.com/aaro-n/docker-next-terminal


dockerhub：https://hub.docker.com/r/aaronlee/next-terminal


拉取镜像：docker pull aaronlee/next-terminal:latest


简单应用：


如果使用openwrt或者爱快之类支持docker的路由系统，可以直接在路由行搭建，例如爱快路由。




首次使用


1、开启爱快的Docker功能（未开通的登录爱快云的插件管理开通Docker）


登录爱快-高级应用-插件管理- docker


Docker服务设置ON


2、服务设置


存储分区设置：选择手动创建的数据分区


镜像库URL：https://docker.1panel.live


3、接口管理


接口名称：创建一个接口给Docker用


IPv4地址：随便一个不冲突的网段给容器用


格式 ：192.168.10.0/24 


IPv4网关：自定义根据上面地址填写


创建容器


1、拉取镜像


镜像管理--添加--镜像库下载--输入你需要下载的镜像


堡垒机：aaronlee/next-terminal


网络监控：louislam/uptime-kuma


输入上面的信息点搜索，出现你需要的镜像，点下载，出现下载界面，直到下载完成。


2、创建容器


容器列表--添加 出现添加界面


容器名称：随意，自己能看懂就行 


内存占用(M)：根据实际一般占用不大，256M 512M都没问题


 * 容器对宿主机内存最大占用值 


选择镜像文件：选择你需要的镜像 


选择网络接口：接口管理中创建的哪个


 * 如需管理接口，请前往容器列表&ldquo;接口管理&rdquo;编辑 


IPv4地址：手动填写固定IP或者不填写是自动IP


 选填 


IPv6地址：


 选填 


开机自启：重启爱快是否启动


3、启动镜像


根据镜像说明可以登录系统


例如上面的堡垒机登录地址：


http://ip:8088


用户名：admin   密码：admin


上面的uptime-kuma登录地址：


http://ip:3001


接入网关


ssh服务器：


tlze/debian-sshd


bimg/alpine-ssh


常用镜像库URL：


https://ckq4qobq.mirror.aliyuncs.com


针对上面的接入网关，其实就是一个ssh服务器，起到端口转发作用，用docker创建一个就可以，特别是 bimg/alpine-ssh 基于alpine的，体积才十几兆非常小，但是用途一样，只需要映射一个ssh端口，就可以通过堡垒机管理局域网的服务器，但是ssh允许用户登录，会有安全隐患，故可以创建一个 nologin 权限的账号，没有登录的权限，安全性会提高。




XML/HTML代码


    #创建一个nologin权限的账号aaa

    useradd -s /usr/sbin/nologin aaa

    #给账号设置一个密码

    echo &quot;aaa:abcd1234&quot; | chpasswd




将上面创建的服务器ip，映射的端口，创建的nologin权限的账号密码填入接入网关，就可以正常使用了。




ssh代理如果在一段时间内无访问的话会自动断线，可以修改本机的/etc/ssh/ssh_config文件，让ssh自动发送心跳保持连接状态。




XML/HTML代码


    # 每60秒像服务器发送一个心跳请求

    ServerAliveInterval 60

    # 超过3次心跳请求无回应则断开连接

    ServerAliveCountMax 3







导入离线镜像包：




如果网络有问题或者使用镜像库下载不成功，可以不用设置镜像库直接上传docker系统镜像包，直接导入离线包。


1、上传镜像包


系统设置 &gt; 磁盘管理 &gt; 文件管理


打开数据分区，直接上传镜像包或者建立一个目录上传


找到上传的镜像包，点击查看路径，复制文件路径


2、导入镜像包


高级应用 &gt; 插件管理&gt;Docker&gt;镜像管理&gt;添加


上传方式：引用镜像（默认）


镜像路径：粘贴文件路径


点击确认后，在镜像管理中可以看到上传的镜像包，就可以正常使用了。


JumpServer


官网：https://www.jumpserver.com


Github：https://github.com/jumpserver/jumpserver


Gitee：https://gitee.com/jumpserver/jumpserver


Linux单机部署：


环境需求：(Debian/Ubuntu)




XML/HTML代码


    apt-get update

    apt-get install -y wget curl tar gettext iptables





在线安装：


XML/HTML代码


    #国外服务器

    curl -sSL https://github.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash

    #官方服务器

    https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash




离线安装：


从飞致云社区下载最新的 linux/amd64 离线包, 并上传到部署服务器的 /opt 目录


XML/HTML代码


    cd /opt

    tar -xf jumpserver-ce-v4.8.0-x86_64.tar.gz

    cd jumpserver-ce-v4.8.0-x86_64







XML/HTML代码


    cd jumpserver-ce-v4.8.0-x86_64

    # 启动

    ./jmsctl.sh start

    # 停止

    ./jmsctl.sh down

    # 卸载

    ./jmsctl.sh uninstall

    # 帮助

    ./jmsctl.sh -h





安装成功后，通过浏览器访问登录 JumpServer


地址: http://JumpServer服务器IP地址


用户名: admin     密码: ChangeMe




all-in-one 快速部署


XML/HTML代码


    docker volume create jsdata &amp;&gt; /dev/null

    docker volume create pgdata &amp;&gt; /dev/null

    docker run --name jms_all \

         -e SECRET_KEY=PleaseChangeMe \

         -e BOOTSTRAP_TOKEN=PleaseChangeMe \

         -v jsdata:/opt/data \

         -v pgdata:/var/lib/postgresql \

         -p 2222:2222 \

         -p 80:80 jumpserver/jms_all





默认账号: admin       默认密码: ChangeMe






其他参考官方文档：https://docs.jumpserver.org/zh/v4/architecture






</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
