经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
提升运维效率:轻松掌握JumpServer安装和使用技巧
来源:cnblogs  作者:易墨  时间:2023/11/10 10:07:19  对本文有异议

前言

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 配置文件

  1. version: '3.1'
  2. services:
  3. jms_mysql:
  4. image: mariadb:10.6
  5. container_name: jms_mysql
  6. restart: always
  7. environment:
  8. MARIADB_DATABASE: jumpserver
  9. MARIADB_ROOT_PASSWORD: devops666
  10. healthcheck:
  11. test: "mysql -h 127.0.0.1 -u root -p devops666 -e 'SHOW DATABASES;'"
  12. interval: 10s
  13. timeout: 5s
  14. retries: 3
  15. start_period: 30s
  16. volumes:
  17. - ./data-mysql:/var/lib/mysql
  18. networks:
  19. - devopsnetwork
  20. jms_redis:
  21. image: redis:6.2
  22. container_name: jms_redis
  23. restart: always
  24. command: redis-server --requirepass devops666
  25. environment:
  26. REDIS_PASSWORD: devops666
  27. healthcheck:
  28. test: "redis-cli -h 127.0.0.1 -a devops666 info Replication"
  29. interval: 10s
  30. timeout: 5s
  31. retries: 3
  32. start_period: 10s
  33. volumes:
  34. - ./data-redis:/data
  35. networks:
  36. - devopsnetwork
  37. jms_server:
  38. container_name: jms_all
  39. restart: always
  40. image: jumpserver/jms_all:v3.8.1
  41. volumes:
  42. - ./data-server/core/data:/opt/jumpserver/data # Core 持久化目录, 存储录像日志
  43. - ./data-server/koko/data:/opt/koko/data # Koko 持久化目录
  44. - ./data-server/lion/data:/opt/lion/data # Lion 持久化目录
  45. - ./data-server/magnus/data:/opt/magnus/data # Magnus 持久化目录
  46. - ./data-server/kael/data:/opt/kael/data # Kael 持久化目录
  47. - ./data-server/chen/data:/opt/chen/data # Chen 持久化目录
  48. - ./data-server/web/log:/var/log/nginx # Nginx 日志持久化目录
  49. privileged: true
  50. environment:
  51. # 自行生成随机的字符串, 不要包含特殊字符串, 长度推荐大于等于 50
  52. - SECRET_KEY=2FsdGVkX19mzMum9dqqphTCNpm9dqqphTCNpm9dqqphTCNpm9dqqphTCNpm9dqqphTCNpm9dqqphTCNpm9dqqphTCNpCPV
  53. # 自行生成随机的字符串, 不要包含特殊字符串, 长度推荐大于等于 24
  54. - BOOTSTRAP_TOKEN=m9dqqphTCNpm9dqqphTCNpm9dqqphTCNp
  55. # 日志等级, 测试环境推荐设置为 DEBUG
  56. - LOG_LEVEL=ERROR
  57. # redis配置
  58. - REDIS_HOST=jms_redis
  59. - REDIS_PORT=6379
  60. - REDIS_PASSWORD=devops666
  61. # mysql配置
  62. - DB_HOST=jms_mysql
  63. - DB_PORT=3306
  64. - DB_USER=root
  65. - DB_NAME=jumpserver
  66. - DB_PASSWORD=devops666
  67. # 不设置无法登录,可以设置域名或者服务器的IP
  68. - DOMAINS=jumpserver.devops.test.com,192.168.123.214:81
  69. ports:
  70. - '81:80'
  71. networks:
  72. - devopsnetwork
  73. networks:
  74. devopsnetwork:
  75. external: true

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

JumpServer 使用 nginx 配置域名转发

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

  1. server {
  2. listen 80;
  3. listen 443 ssl;
  4. server_name jumpserver.devops.test.com; # 自行修改成你的域名
  5. client_max_body_size 4096m; # 上传文件大小限制
  6. ssl_certificate /certs/jumpserver.devops.test.com/server.crt;
  7. ssl_certificate_key /certs/jumpserver.devops.test.com/server.key;
  8. ssl_session_cache shared:SSL:1m;
  9. ssl_session_timeout 5m;
  10. ssl_ciphers HIGH:!aNULL:!MD5;
  11. ssl_prefer_server_ciphers on;
  12. location / {
  13. # 这里的 ip 是后端 JumpServer nginx 的 ip
  14. proxy_pass http://jms_server:80;
  15. proxy_http_version 1.1;
  16. proxy_buffering off;
  17. proxy_request_buffering off;
  18. proxy_set_header Upgrade $http_upgrade;
  19. proxy_set_header Connection "upgrade";
  20. proxy_set_header Host $host;
  21. proxy_set_header X-Forwarded-For $remote_addr;
  22. }
  23. }
  • 配置好 nginx 重载配置生效后访问成功

JumpServer 的常规使用

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

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

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

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

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

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

  • 首先需要安装油猴插件:tampermonkey
  • 添加油猴脚本
  1. // ==UserScript==
  2. // @name 直接打开JumpServer网站
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description try to take over the world!
  6. // @author yimo
  7. // @match https://jumpserver.devops.test.com/luna/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=test.com
  9. // @grant none
  10. // ==/UserScript==
  11. (function() {
  12. 'use strict';
  13. window.onload=function(){
  14. console.log('load custom js')
  15. var ulElement = document.querySelector("#winContainer > div > div > div > ul");
  16. if(ulElement){
  17. var newLi = document.createElement('li');
  18. newLi.innerHTML = '<span style="color:#7494f3;margin-right: 6px">油猴插件 → 网站资产</span> 直接新窗口打开网站';
  19. ulElement.appendChild(newLi);
  20. }
  21. setInterval(()=>{
  22. document.querySelectorAll(".node_name").forEach(s=>{
  23. if(s.isAddHtml)return;
  24. s.isAddHtml=true;
  25. if(s.parentNode.getAttribute("title").indexOf('http')==0){
  26. console.log('检测到站点:'+s.parentNode.getAttribute("title"))
  27. s.addEventListener('click',function(e){
  28. console.log('click')
  29. var titleUrl = s.parentNode.getAttribute("title");
  30. window.open(titleUrl);
  31. e.stopPropagation();
  32. })
  33. return;
  34. }
  35. })
  36. },500);
  37. }
  38. })();
  • 生效后即可直接打开站点了

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

踩坑记录

  • Jumpserver 默认账号密码 admin admin

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

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

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

相关文档

后语

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

原文链接:https://www.cnblogs.com/morang/p/devops-jumpserver-install-use.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号