jumpserver-v2.2.2【部署教程】

news2024/11/7 15:30:10

目录

什么是 跳板机

跳板机的缺点 

使用堡垒机的优势

jumpserver的组件

【1】时间同步

【2】安装依赖

【3】修改数据库字符集、创建远程用户

【4】创建python的虚拟环境,用于专门运行jumpserver的环境

【5】获取jumpserver的代码

【6】安装编译环境依赖

【7】修改配置文件

【8】启动jumpserver服务

【8】验证数据是否导入成功

【10】浏览器访问

【11】安装koko 提供ssh server和web terminal server方式登录、管理资产

【12】部署前端组件,用于展示页面

【13】配置nginx

【14】启动nginx

【15】浏览器访问测试


硬件配置CPU-2个、内存-4G、硬盘-50G【最低】
python= 3.6x
mysql  server>=5.6
mariadb server>=5.5.56
redis

什么是 跳板机

  1. 说白了就是一台服务器,拥有公网和内网,可以免密登录内网任意一台节点服务器
  2. 当开发人员和运维人员维护内网机器时,先登录到跳板机,在通过跳板机免密登录到任意目标主机

跳板机的缺点 

  1. 无法实现对登录人员行为的控制和审计
  2. 如果后端节点出现错误没有办法快速定位错误原因和责任人

使用堡垒机的优势

  1. 4A优势、资产统一管理
  2. 具有审计、记录、视频回放的功能,能够快速定位错误原因
  3. 可以限制危险命令的使用,如:rm、dd等命令
  4. 限制登录目标服务器的身份,使用普通用户
  5. 身份鉴定:防止身份冒用和复用
  6. 授权控制:防止内部操作和权限滥用
  7. 账号管理:人员和资产管理
  8. 安全审计:分析事故的原因
  9. 使用堡垒机能够让运维工作更安全、更便捷的登录目标资产

jumpserver的组件

  1. jumpserver:提供管理后台,管理员可以通过web页面进行资产管理、用户管理、资产授权等
  2. koko:提供ssh server和web terminal server方式登录资产
  3. lina、luna:提供web页面
  4. guacamole:提供RDP功能,用户可以通过该方式登录、管理 windows 资产

【1】时间同步

[root@jumpserver ~]# yum -y install ntpdate.x86_64
[root@jumpserver ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@jumpserver ~]# ntpdate ntp1.aliyun.com

【2】安装依赖

[root@jumpserver ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

[root@jumpserver ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

[root@jumpserver ~]# yum -y install python3 python3-devel mariadb-server.x86_64 mariadb redis

[root@jumpserver ~]# systemctl enable redis mariadb.service
[root@jumpserver ~]# systemctl start redis mariadb.service

【3】修改数据库字符集、创建远程用户

MariaDB [(none)]> create database jumpserver default charset 'utf8' collate 'utf8_bin';
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on *.* to jumpserver@'%' identified by 'jum123';
Query OK, 0 rows affected (0.00 sec)

【4】创建python的虚拟环境,用于专门运行jumpserver的环境

[root@jumpserver ~]# python3.6 -m venv /opt/py3

## 载入python的虚拟环境
[root@jumpserver ~]# source /opt/py3/bin/activate
(py3) [root@jumpserver ~]#

【5】获取jumpserver的代码

(py3) [root@jumpserver opt]#  wget https://github.com/jumpserver/jumpserver/releases/download/v2.2.2/jumpserver-v2.2.2.tar.gz
(py3) [root@jumpserver opt]# tar xf jumpserver-v2.2.2.tar.gz 
(py3) [root@jumpserver opt]# mv jumpserver-v2.2.2 jumpserver

【6】安装编译环境依赖

(py3) [root@jumpserver opt]# cd /opt/jumpserver/requirements/
(py3) [root@jumpserver requirements]# yum -y install $(cat requirements.txt)

(py3) [root@jumpserver requirements]# pip install wheel -i https://mirrors.aliyun.com/pypi/simple/

(py3) [root@jumpserver requirements]# pip install --upgrade pip setuptools -i https://mirrors.aliyun.com/pypi/simple/

(py3) [root@jumpserver requirements]# pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

【7】修改配置文件

## 生成随机加密密钥,配置文件中使用
if [ ! "$SECRET_KEY" ];then
    SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`;
    echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc;
    echo $SECRET_KEY;
else
    echo $SECRET_KEY;
fi
if [ ! "$BOOTSTRAP_TOKEN" ];then
    BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`;
    echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc;
    echo "$BOOTSTRAP_TOKEN";
else
    echo $BOOTSTRAP_TOKEN;
fi

(py3) [root@jumpserver requirements]# tail -2 ~/.bashrc 
SECRET_KEY=UmjKTyjVY4ZA4q803FETOY4pM2TJqeLnpbdgiEZMpJoybHc2mS
BOOTSTRAP_TOKEN=l1xWs3CggsGdnwtx
  • 修改配置文件
(py3) [root@jumpserver requirements]# cd /opt/jumpserver/
(py3) [root@jumpserver jumpserver]# cp config_example.yml config.yml
(py3) [root@jumpserver jumpserver]# grep "^[a-Z]" config.yml 
SECRET_KEY: UmjKTyjVY4ZA4q803FETOY4pM2TJqeLnpbdgiEZMpJoybHc2mS
BOOTSTRAP_TOKEN: l1xWs3CggsGdnwtx
DEBUG: false
LOG_LEVEL: ERROR
SESSION_EXPIRE_AT_BROWSER_CLOSE: true
DB_ENGINE: mysql
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_USER: jumpserver
DB_PASSWORD: jum123
DB_NAME: jumpserver
HTTP_BIND_HOST: 0.0.0.0
HTTP_LISTEN_PORT: 8080
WS_LISTEN_PORT: 8070
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379
WINDOWS_SKIP_ALL_MANUAL_PASSWORD: True

【8】启动jumpserver服务

(py3) [root@jumpserver jumpserver]# cd /opt/jumpserver/
(py3) [root@jumpserver jumpserver]# ./jms start -d

## 出现报错如下
django.db.utils.OperationalError: (2006, "Access denied for user 'jumpserver'@'localhost' (using password: YES)")

## 解决办法
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> delete from user where user='';
Query OK, 2 rows affected (0.00 sec)

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

## 再次启动
(py3) [root@jumpserver jumpserver]# ./jms start -d

【8】验证数据是否导入成功

MariaDB [mysql]> use jumpserver ;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [jumpserver]> show tables;
+----------------------------------------------+
| Tables_in_jumpserver                         |
+----------------------------------------------+
| applications_databaseapp                     |
| applications_k8sapp                          |
| applications_remoteapp                       |
| assets_adminuser                             |
| assets_asset                                 |
| assets_asset_labels                          |
| assets_asset_nodes                           |
| assets_assetgroup                            |
| assets_authbook                              |
| assets_cluster                               |
| assets_commandfilter                         |
| assets_commandfilterrule                     |
| assets_domain                                |
| assets_favoriteasset                         |
| assets_gateway                               |
| assets_gathereduser                          |
| assets_label                                 |
| assets_node                                  |
| assets_platform                              |
| assets_systemuser                            |
| assets_systemuser_assets                     |
| assets_systemuser_cmd_filters                |
| assets_systemuser_groups                     |
| assets_systemuser_nodes                      |
| assets_systemuser_users                      |
| audits_ftplog                                |
| audits_operatelog                            |
| audits_passwordchangelog                     |
| audits_userloginlog                          |
| auth_group                                   |
| auth_group_permissions                       |
| auth_permission                              |
| authentication_accesskey                     |
| authentication_loginconfirmsetting           |
| authentication_loginconfirmsetting_reviewers |
| authentication_privatetoken                  |
| authentication_ssotoken                      |
| captcha_captchastore                         |
| django_admin_log                             |
| django_cas_ng_proxygrantingticket            |
| django_cas_ng_sessionticket                  |
| django_celery_beat_crontabschedule           |
| django_celery_beat_intervalschedule          |
| django_celery_beat_periodictask              |
| django_celery_beat_periodictasks             |
| django_celery_beat_solarschedule             |
| django_content_type                          |
| django_migrations                            |
| django_session                               |
| jms_oidc_rp_oidcuser                         |
| ops_adhoc                                    |
| ops_adhoc_execution                          |
| ops_adhoc_hosts                              |
| ops_celerytask                               |
| ops_commandexecution                         |
| ops_commandexecution_hosts                   |
| ops_task                                     |
| orgs_organization                            |
| orgs_organization_members                    |
| perms_assetpermission                        |
| perms_assetpermission_assets                 |
| perms_assetpermission_nodes                  |
| perms_assetpermission_system_users           |
| perms_assetpermission_user_groups            |
| perms_assetpermission_users                  |
| perms_databaseapppermission                  |
| perms_databaseapppermission_database_apps    |
| perms_databaseapppermission_system_users     |
| perms_databaseapppermission_user_groups      |
| perms_databaseapppermission_users            |
| perms_k8sapppermission                       |
| perms_k8sapppermission_k8s_apps              |
| perms_k8sapppermission_system_users          |
| perms_k8sapppermission_user_groups           |
| perms_k8sapppermission_users                 |
| perms_remoteapppermission                    |
| perms_remoteapppermission_remote_apps        |
| perms_remoteapppermission_system_users       |
| perms_remoteapppermission_user_groups        |
| perms_remoteapppermission_users              |
| settings_setting                             |
| terminal                                     |
| terminal_command                             |
| terminal_commandstorage                      |
| terminal_replaystorage                       |
| terminal_session                             |
| terminal_status                              |
| terminal_task                                |
| tickets_comment                              |
| tickets_ticket                               |
| tickets_ticket_assignees                     |
| users_user                                   |
| users_user_groups                            |
| users_user_user_permissions                  |
| users_usergroup                              |
+----------------------------------------------+
95 rows in set (0.00 sec)

【10】浏览器访问

【11】安装koko 提供ssh server和web terminal server方式登录、管理资产

(py3) [root@jumpserver jumpserver]# cd /opt/
(py3) [root@jumpserver opt]# wget https://github.com/jumpserver/koko/releases/download/v2.2.2/koko-v2.2.2-linux-amd64.tar.gz
(py3) [root@jumpserver opt]# tar xf koko-v2.2.2-linux-amd64.tar.gz 
(py3) [root@jumpserver opt]# mv koko-v2.2.2-linux-amd64 koko
(py3) [root@jumpserver opt]# chown -R root.root koko/
  •  修改配置文件
(py3) [root@jumpserver opt]# cd koko/
(py3) [root@jumpserver koko]# cp config_example.yml config.yml
(py3) [root@jumpserver koko]# vim config.yml 
(py3) [root@jumpserver koko]# grep "^[a-Z]" config.yml 
CORE_HOST: http://127.0.0.1:8080
BOOTSTRAP_TOKEN: l1xWs3CggsGdnwtx
LOG_LEVEL: ERROR
SHARE_ROOM_TYPE: redis
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379
  • 启动koko组件
(py3) [root@jumpserver koko]# ./koko -d
(py3) [root@jumpserver koko]# netstat -lntp | grep koko
tcp6       0      0 :::2222                 :::*                    LISTEN      6180/./koko         
tcp6       0      0 :::5000                 :::*                    LISTEN      6180/./koko  

【12】部署前端组件,用于展示页面

  • 安装lina组件
(py3) [root@jumpserver opt]# wget https://github.com/jumpserver/lina/releases/download/v2.2.2/lina-v2.2.2.tar.gz
(py3) [root@jumpserver opt]# tar xf lina-v2.2.2.tar.gz 
(py3) [root@jumpserver opt]# mv lina-v2.2.2 lina
(py3) [root@jumpserver opt]# yum  -y install nginx
(py3) [root@jumpserver opt]# chown -R nginx.nginx lina/
  • 安装luna组件
(py3) [root@jumpserver opt]# cd /opt/
(py3) [root@jumpserver opt]# wget https://github.com/jumpserver/luna/releases/download/v2.2.2/luna-v2.2.2.tarr.gz
(py3) [root@jumpserver opt]# tar xf luna-v2.2.2.tar.gz 
(py3) [root@jumpserver opt]# mv luna-v2.2.2 luna
(py3) [root@jumpserver opt]# chown -R nginx.nginx luna/

【13】配置nginx

(py3) [root@jumpserver opt]# vim /etc/nginx/conf.d/jumpserver.conf
server {
  listen 80;
  server_name jumpserver.test.org;
    client_max_body_size 100m;         ## 录像和文件上传大小限制
  location /ui/ {
    try_files $uri / /index.html;
    alias /opt/lina/;
  }
  location /luna/ {
    try_files $uri / /index.html;
    alias /opt/luna/;
  }
  location /media/ {
    add_header Content-Encoding gzip;
    root /opt/jumpservre/data/;        ## 录像位置
  }
  location /static/ {
    root /opt/jumpserver/data/;        ## 静态资源
  }
  location /koko/ {
    proxy_pass http://127.0.0.1:5000;
    proxy_buffering off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    access_log off;
  }
  location /guacamole/ {        ## windows 组件
    proxy_pass http://127.0.0.1:8081/;
    proxy_buffering off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    access_log off;
  }
  location /ws/ {
    proxy_pass http://127.0.0.1:8070;
    proxy_buffering off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  location /api/ {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  location /core/ {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location / {
    rewrite ^/(.*)$ /ui/$1 last;
  }
}

【14】启动nginx

(py3) [root@jumpserver opt]# systemctl enable nginx.service 

(py3) [root@jumpserver opt]# systemctl start nginx.service

(py3) [root@jumpserver opt]# netstat -lntp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6750/nginx: master

【15】浏览器访问测试

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/684107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【管理系列-09】软件成本怎么评估,知己知彼才能做软件造价

项目来了,总要叫来几个人,讨论一下成本是多少,能不能接,作为研发经理,能够较为合理的评估成本是一项必备技能,如何科学合理的评估,达到对内对外都满意,我想这是每个研发经理的必修课…

管理类联考——逻辑——知识篇——分析推理——四、数字——haimian

数字 题型识别 与数字相关的分析推理题在逻辑科目中扮演着非常重要的角色,可能涉及方程、不等式、分子与分母比值关系、百分比、概率、集合运算等,可结合数学方法或利用数字规律进行解题。 思维导图 常用公式 从某种意义上说,数学本身就是…

五、浅析[ElasticSearch]底层原理与分组聚合查询

目录 一、ElasticSearch文档分值_score计算底层原理1.boolean model2.relevance score算法2、分析一个document上的_score是如何被计算出来的 二、分词器工作流程1.character filter、tokenizer、token filter2、内置分词器的简单介绍3、定制分词器3.1默认的分词器--standard3.…

《教我兄弟学Android逆向13 xpose改机开发01-环境设置》

上一篇 《教我兄弟学Android逆向12 编写xposed模块》 我们了解了xpose的基本原理并一起搭建了xpose的hook环境,你也很好的完成了课后作业,但是通过后面的测试练习你发现xpose在不同系统环境的安装方法是不一样的,在我们之前的低系统手机上面直接安装就能…

LNMP六个实验

目录 访问状态统计配置 基于授权的访问控制 基于客户端的访问控制 基于域名的 Nginx 虚拟主机 基于IP 的 Nginx 虚拟主机 基于端口的 Nginx 虚拟主机 总结 访问状态统计配置 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块 修改 nginx.conf 配置文件,…

Python基础四

目录 一、Python数据类型--列表 1.列表的下标 2.访问列表中的元素 3.更新列表元素 4.删除列表元素 5.列表脚本操作符 6.列表截取与拼接 截取 拼接 7.嵌套列表 8.列表比较 二、Python内置函数--列表相关 一、Python数据类型--列表 Python中的列表类似于java的数组 列…

Rust语言从入门到入坑——(7)Rust 错误处理

文章目录 0 引入1、可恢复错误2、可恢复错误递归3、不可恢复错误4、kind 方法5、总结 0 引入 Rust 有一套独特的处理异常情况的机制,程序中一般会出现两种错误:可恢复错误和不可恢复错误。 1、可恢复错误的典型案例是文件访问错误,如果访问一…

RVEA算法

RVEA 1 目标函数2 预备知识3 参考向量引导选择4 更新参考向量5 流程6 代码7 运行效果 1 目标函数 min ⁡ X f ( X ) ( f 1 ( X ) , f 2 ( X ) , . . . , f M ( X ) ) \min_{\small{X}} \pmb{f(\small{X})} (f_1(\small{X}), f_2(\small{X}), ..., f_M(\small{X})) Xmin​f(X)…

数据结构——快速排序的介绍

快速排序 快速排序是霍尔(Hoare)于1962年提出的一种二叉树结构的交换排序方法。快速排序是一种常用的排序算法,其基本思想是通过选择一个元素作为"基准值",将待排序序列分割成两个子序列,其中一个子序列的元素都小于等于基准值&am…

DAY29:回溯算法(四)组合总和+组合总和Ⅱ

文章目录 39.组合总和思路伪代码为什么传入i而不是i1,不会导致无限循环 完整版剪枝优化剪枝修改完整版补充:std::sort升降序的问题(默认升序) 40.组合总和Ⅱ思路最开始的写法debug测试:逻辑错误修改完整版:…

营销策划报告个人心得

营销策划报告个人心得篇1 20__年3月27日晚,我们12级市营专业的同学们早早的来到了大成楼。根据网络营销与策划课程实训要求,覃希老师邀请了校外企业经理给我们进行产品培训。 我们按实训项目分别安排在C302和C304教室培训,培训中同学们认认真…

基于深度学习的高精度水果检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度水果(苹果、香蕉、葡萄、橘子、菠萝和西瓜)检测识别系统可用于日常生活中或野外来检测与定位水果目标,利用深度学习算法可实现图片、视频、摄像头等方式的水果目标检测识别,另外支持结果可视…

OpenGL 模板测试

1.示例效果图 选中模型对象,出现模型轮廓。 2.简介 当片段着色器处理完一个片段之后,模板测试会开始执行,和深度测试一样,它也可能会丢弃片段。接下来,被保留的片段会进入深度测试,它可能会丢弃更多的片…

MongoDB集群管理(三)

MongoDB集群管理 集群介绍 为什么使用集群 随着业务数据和并发量的增加,若只使用一台MongoDB服务器,存在着断电和数据风险的问题,故采用Mongodb复制集的方式,来提高项目的高可用、安全性等性能。 MongoDB复制是将数据同步到多个…

LNMP (Nginx网站服务) nginx 平滑升级

目录 1.1 Nginx的简介 1.2 Apache与Nginx的区别 Nginx对比Apache的优势: 1.3 Nginx的进程 Nginx的两个进程: 同步,异步,阻塞,非阻塞的概念补充 阻塞与非阻塞 同步和异步 2.1 编译安装Nginx 2.1 .1 关闭防火墙…

两点边值问题的有限元方法以及边值条件的处理示例

文章目录 引言题目补全方程刚度矩阵构造基底边值条件非齐次左边值条件非齐次右边值条件非齐次非齐次边值条件有限元方程 求数值解直接求总刚度矩阵先求单元刚度矩阵 引言 本文参考李荣华教授的《偏微分方程数值解法》一书 题目 对于非齐次第二边值问题 { − d d x ( p d u …

陶哲轩甩出调教GPT-4聊天记录,点击领取大佬的研究助理

量子位 | 公众号 QbitAI 鹅妹子嘤,天才数学家陶哲轩搞数学研究,已经离不开普通人手里的“数学菜鸡”GPT了! 就在他最新解决的一个数学难题下面,陶哲轩明确指出自己“使用了GPT-4”,后者给他提出了一种可行的解决方法…

【FFmpeg实战】avformat_find_stream_info() 函数源码解析

转载自地址:https://cloud.tencent.com/developer/article/1873836 先来看一下 avformat_find_stream_info() 的头文件里的注释对该函数的介绍,本文我们基于 FFmpeg n4.2 版本的源码分析。 /*** Read packets of a media file to get stream informatio…

Apikit 自学日记:创建 API 文档

Apikit 中一共有5种创建API文档的方式: 新建API文档 导入API文档,详情可查看《导入、导出API文档》 从模板添加API文档,详情可查看《API文档模板》 自动生成API文档,详情可查看《自动生成API文档》 IDEA插件注释同步API文档 …

linux 在线安装 Redis

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收…