首页 > 其他分享 >提升运维效率:轻松掌握JumpServer安装和使用技巧

提升运维效率:轻松掌握JumpServer安装和使用技巧

时间:2023-11-10 09:04:48浏览次数:40  
标签:技巧 运维 jms redis jumpserver server mysql JumpServer data

前言

JumpServer 是一个开源的跳板机的解决方案,提供了对远程服务器的安全访问、会话录制和审计、用户身份管理等功能,适用于需要管理机器资源&大量服务器资源的情况。
本文将分享在 docker 中 JumpServer 的安装使用经验,并使用油猴插件扩展其功能

特点

  • 开源免费,安装使用简单
  • 文档完善,成熟文档
  • 极致的 Web Terminal 使用体验
  • 支持管理 Linux / Windows / 数据库 / K8S 集群 / Web 应用 / Remote App
  • 符合 4A 规范的堡垒机:身份验证 / Authentication 授权控制 / Authorization 账号管理 / Accounting 安全审计 / Auditing

使用情况

  • 使用 docker compose 安装
  • web 终端除了传文件没有 MobaXterm 方便, 但是其显示和命令记录以及快捷命令都挺舒服的

实践

使用 docker compose 安装 JumpServer

  • 文件由三部分组成

    • mariadb 数据库:jms_mysql 镜像:mariadb:10.6
    • reids 缓存:jms_redis 镜像: redis:6.2
    • jumpserver 服务:jms_server镜像:jumpserver/jms_all:v3.8.1
  • 开放端口

    • 未开放 mysql 和 redis 的端口,只给 jumpserver 提供服务
    • Jumpserver 开放端口说明:81:80(未配置域名时验证访问),其他 nginx 使用了 80,通过 nginx 转发到 http://jms_all:80 即可。
    • 定义可信任的访问 DOMAINS 配置jumpserver.devops.test.com``,192.168.123.214:81
  • 指定 mysql 数据库账号密码:root devops666

  • 指定 redis 密码:devops666

  • 添加了健康检查节点

  • 对应服务的挂载目录

    • ./data-mysql
    • ./data-redis
    • ./data-server
  • 指定网络:devopsnetwork (docker network create devopsnetwork

  • 启动时会自动创建&初始化数据库,无需手动初始化

  • 以特权模式运行 jms_server

  • 参考自官方的 allinone 配置文件

version: '3.1'
services:
  jms_mysql:
    image: mariadb:10.6
    container_name: jms_mysql
    restart: always
    environment:
      MARIADB_DATABASE: jumpserver
      MARIADB_ROOT_PASSWORD: devops666
    healthcheck:
      test: "mysql -h 127.0.0.1 -u root -p devops666 -e 'SHOW DATABASES;'"
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 30s
    volumes:
      - ./data-mysql:/var/lib/mysql
    networks:
      - devopsnetwork

  jms_redis:
    image: redis:6.2
    container_name: jms_redis
    restart: always
    command: redis-server --requirepass devops666
    environment:
      REDIS_PASSWORD: devops666
    healthcheck:
      test: "redis-cli -h 127.0.0.1 -a devops666 info Replication"
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 10s
    volumes:
      - ./data-redis:/data
    networks:
      - devopsnetwork
      
  jms_server:
    container_name: jms_all
    restart: always
    image: jumpserver/jms_all:v3.8.1
    volumes:
      - ./data-server/core/data:/opt/jumpserver/data # Core 持久化目录, 存储录像日志
      - ./data-server/koko/data:/opt/koko/data # Koko 持久化目录
      - ./data-server/lion/data:/opt/lion/data # Lion 持久化目录
      - ./data-server/magnus/data:/opt/magnus/data # Magnus 持久化目录
      - ./data-server/kael/data:/opt/kael/data # Kael 持久化目录
      - ./data-server/chen/data:/opt/chen/data # Chen 持久化目录
      - ./data-server/web/log:/var/log/nginx # Nginx 日志持久化目录
    privileged: true
    environment:
      # 自行生成随机的字符串, 不要包含特殊字符串, 长度推荐大于等于 50
      - SECRET_KEY=2FsdGVkX19mzMum9dqqphTCNpm9dqqphTCNpm9dqqphTCNpm9dqqphTCNpm9dqqphTCNpm9dqqphTCNpm9dqqphTCNpCPV
      # 自行生成随机的字符串, 不要包含特殊字符串, 长度推荐大于等于 24
      - BOOTSTRAP_TOKEN=m9dqqphTCNpm9dqqphTCNpm9dqqphTCNp 
      # 日志等级, 测试环境推荐设置为 DEBUG
      - LOG_LEVEL=ERROR
      # redis配置
      - REDIS_HOST=jms_redis
      - REDIS_PORT=6379
      - REDIS_PASSWORD=devops666
      # mysql配置
      - DB_HOST=jms_mysql
      - DB_PORT=3306
      - DB_USER=root
      - DB_NAME=jumpserver
      - DB_PASSWORD=devops666
      # 不设置无法登录,可以设置域名或者服务器的IP
      - DOMAINS=jumpserver.devops.test.com,192.168.123.214:81
    ports:
      - '81:80'
    networks:
      - devopsnetwork

networks:
  devopsnetwork:
    external: true

  • DOMAINS 配置了域名和 IP 端口访问,所以现在可以直接使用默认账号密码 admin admin 进行登录
  • 登录成功修改密码

JumpServer 使用 nginx 配置域名转发

还不会在局域网申请 ssl 及配置的可以参考之前的文章 前后端都用得上的 Nginx 日常使用经验

server {

    listen 80;
    listen       443 ssl;
    server_name jumpserver.devops.test.com;  # 自行修改成你的域名

    client_max_body_size 4096m;  # 上传文件大小限制

    ssl_certificate      /certs/jumpserver.devops.test.com/server.crt;
    ssl_certificate_key  /certs/jumpserver.devops.test.com/server.key;
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location / {
            # 这里的 ip 是后端 JumpServer nginx 的 ip
            proxy_pass http://jms_server:80;
            proxy_http_version 1.1;
            proxy_buffering off;
            proxy_request_buffering off;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
    }
}
  • 配置好 nginx 重载配置生效后访问成功

JumpServer 的常规使用

  • 通过 控制台-资产管理,增加需要管理的 机器、应用,将之前文章安装的 linux 服务器,mysql,redis,mongo 都配置好

  • 通过控制台-权限管理 授权用户能够管理的资产

  • 通过用户管理和权限管理分配资产权限,可以是用户或者组

  • 通过右上角的 Web 终端可以远程连接资产

  • 添加 WebSite 后,如果 JumpServer 安装在 Linux,无法在终端预览!!!但是,想了个办法让他直接新窗口打开

在终端通过油猴插件打开 WebSite 资产

  • 首先需要安装油猴插件:tampermonkey
  • 添加油猴脚本
// ==UserScript==
// @name         直接打开JumpServer网站
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       yimo
// @match        https://jumpserver.devops.test.com/luna/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=test.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    window.onload=function(){
        console.log('load custom js')
        var ulElement = document.querySelector("#winContainer > div > div > div > ul");
        if(ulElement){
            var newLi = document.createElement('li');
            newLi.innerHTML = '<span style="color:#7494f3;margin-right: 6px">油猴插件 → 网站资产</span> 直接新窗口打开网站';
            ulElement.appendChild(newLi);
        }
        setInterval(()=>{
            document.querySelectorAll(".node_name").forEach(s=>{
                if(s.isAddHtml)return;
                s.isAddHtml=true;
                if(s.parentNode.getAttribute("title").indexOf('http')==0){
                    console.log('检测到站点:'+s.parentNode.getAttribute("title"))
                    s.addEventListener('click',function(e){
                         console.log('click')
                         var titleUrl = s.parentNode.getAttribute("title");
                         window.open(titleUrl);
                         e.stopPropagation();
                    })
                    return;
                }
            })
        },500);
    }
})();
  • 生效后即可直接打开站点了

  • 希望后面可以加个配置直接打开站点吧

踩坑记录

  • Jumpserver 默认账号密码 admin admin

  • Mysql 默认账号 root ,密码修改的地方都同步修改

  • DOMAINS 为可信域名,配置不存在无法登录

  • mysql 和 mongodb 连接使用可以,但是连接测试有问题,待解决 issues

相关文档

后语

通过 JumpServer 可以搭建一套测试环境的相关环境,并且将相关的网站通过其公开,成员可以直接使用,而无需记录地址账号等信息,研究过程中也看了 1Panel,发现对 Docker 没有很好的支持,准备后续接入夜莺监控更好的检测局域网资源的一个状态,敬请期待。

标签:技巧,运维,jms,redis,jumpserver,server,mysql,JumpServer,data
From: https://www.cnblogs.com/morang/p/devops-jumpserver-install-use.html

相关文章

  • vs c++ 调试技巧
    C语言基础入门48篇_04VS调试入门https://blog.csdn.net/Dasis/article/details/121397288栈回溯——获取当前线程内ebp与call_rethttps://www.cnblogs.com/qinghuan190319/p/15378357.htmlvs中c++的反汇编分析https://blog.nowcoder.net/n/70946cb0519a4bcab57097a0764990d1?......
  • Go Web开发进阶项目实战-Go语言实战课程体系,企业项目开发经验与技巧
    书接上回,上次我们搭建好了项目入口文件,同时配置了路由体系,接着就可以配置项目的模板了,这里我们采用Iris内置的模板引擎,事实上,采用模板引擎并不意味着前后端耦合,模板中的数据保持其独立性即可,也就是说模板的数据操作交互方式采用http接口请求的形式,Iris并不参与模板逻辑,只返回Jso......
  • 从 SQL 查询优化技巧去看 h2 数据库查询原理 | 京东物流技术团队
    本文目标是:了解查询的核心原理,对比SQL查询优化技巧在h2database中的落地实现。前提:为了贴近实际应用,本文CodeInsight基于BTree存储引擎。数据查询核心原理数据库实现查询的原理:遍历表/索引,判断是否满足where筛选条件,添加到结果集。简单通用。对于选择表还是索引、如何遍历......
  • Python中的列表和元组:添加、修改和删除元素的技巧
    在Python中,列表(List)和元组(Tuple)都是用于存储数据的集合类型。虽然它们在某些方面相似,例如都可以存储各种类型的数据,但它们也有一些重要的区别,比如可变性。列表是可变的,意味着我们可以更改、添加或删除列表中的元素,而元组是不可变的,一旦它被创建,就不能更改。在这篇文章中,我们将详细......
  • 【北京银联商务】科技引领运维革命,嘉为蓝鲸WeOps打造运维新底座
    银联商务股份有限公司是首批获得人民银行颁发《中华人民共和国支付业务许可证》的支付机构,经过20多年的精耕细作,取得了国内收单机构第一、亚太地区第二的排名以及46.3%的市场份额的不俗的业绩,领跑国内整个第三方支付市场。该公司的成功,离不开始终坚持以科技作为发展的核心驱动力,在......
  • 应急电源车状态监测智能运维系统解决方案
    应急电源车是要应用于政府、军队、大型企业、医院、重要公共设施等领域,以应对突发灾害、大规模停电等紧急情况,为保障人民生命、生产和生活安全提供紧急电力支撑。由于其工作性质特殊,应急电源车一般分布在各个地区或是处于长期移动的状态,对于特种车辆的管理运维十分不便,对于场景供电......
  • WPF中的Binding的常见知识点与技巧
    在XAML中,可以绑定到许多不同类型的数据源和属性。以下是一些可以绑定的常见数据源和属性:属性:可以绑定到对象的属性,例如控件的Text、Visibility、IsEnabled等属性。集合:可以绑定到集合数据,如List、ObservableCollection、Array等。在绑定到集合时,还可以使用索引器绑定到特定项。静态......
  • 传统的运维将消失?体系化的 SRE 可靠性与连续性保障,了解一下?
    什么是SRE?在刚刚接触SRE时,很多人认为就是Google的一个具备全栈能力的岗位,可以独立解决很多问题的人。而在深入探究之后发现,SRE确实可以解决很多问题,但问题实在太多了,一个岗位或一个人是很难高效快速的解决的。比如怎么做容量评估、怎么进行故障演练、怎么能做到服务限流、怎么做到......
  • 网络流技巧
    模拟费用流费用流模型是一类非常优秀的模型,但是用于解决费用流问题的常规算法大都比较鸡肋,因此在一些特殊的网络上可以使用模拟费用流的思想来解决此类问题。模拟费用流没有固定的模板,只能算一种思想,在这里只能是大致分类一下。wqs二分反悔贪心模拟费用流直接模拟增广的过程......
  • 必看!玩转Salesforce沙盒的5个实用技巧
    定期刷新沙盒对于尝试最新版本的功能,以及防止在生产组织的环境中缺乏测试而导致开发工作回滚至关重要。为了确保沙盒设置在刷新后顺利进行,需要考虑几个因素。首先,确保有完善的文档化流程。文档应分为Conga、DocuSign、数据(CPQ/计费/高级审批)、用户设置和集成等部分。此外,重要的......