JumpServer介绍及v4版本单机部署

笔记哥 / 05-25 / 50点赞 / 0评论 / 175阅读
## 概述 JumpServer官网:https://www.jumpserver.org/ JumpServer官网文档:https://docs.jumpserver.org/zh/v4/ GitHub地址:https://github.com/jumpserver/jumpserver JumpServer 是一款由开源中国(OSCHINA)旗下团队使用python开发的开源堡垒机系统,遵循 `Apache 2.0` 开源协议。作为企业级的运维安全审计解决方案,它主要用于解决复杂环境下的服务器、网络设备、云资源等资产的集中管理、权限控制、操作审计等问题,帮助企业实现合规性管理并降低运维风险。 JumpServer分为开源版和企业版,开源版仅提供基础功能,适合中小企业或技术团队自主搭建,而企业版则支持集群部署,高可用(HA),多云管理,定制化开发等高级功能,适合企业和复杂场景(钱的好处-.-,还是有钱好哇) ## JumpServer作用 - 统一资产管理 - 支持管理多种类型资产,包括 Linux/Windows 服务器、网络设备(如交换机、路由器)、数据库、云主机(如 AWS、阿里云、腾讯云等) 等。 - 资产可按部门、环境(生产 / 测试)、标签等维度分组管理,方便权限分配和审计。 - 细粒度权限控制 - 基于 RBAC(角色访问控制) 模型,可灵活创建用户、角色、资产组的关联关系。 - 支持动态授权,例如按时间段、协议(SSH/RDP/Telnet/MySQL 等)、IP 来源限制访问权限。 - 多协议支持与会话管理 - 支持 SSH、RDP、Telnet、VNC、MySQL、Redis 等主流协议的远程连接。 - 提供 会话录制与实时监控,管理员可实时查看用户操作,或通过录像回放追溯历史操作,满足审计需求。 - 审计与日志管理 - 自动记录所有用户操作日志,包括登录日志、命令执行记录、文件传输记录等。 - 支持日志检索、统计分析,可导出日志用于合规性检查(如等保、分保要求)。 - 双因子认证(2FA) - 支持 Google Authenticator、RSA 令牌、短信验证等二次认证方式,增强登录安全性。 - 插件扩展与 API 接口 - 提供丰富的插件机制(如 LDAP/AD 集成、Sentry 监控、K8s 管理等),支持与企业现有系统对接。 - 开放 RESTful API,方便与 ITSM、CMDB 等平台集成,实现自动化运维流程。 ## JumpServer单机部署 这里部署v4版本的JumpServer ### 环境信息 我这里仅使用一台机器作为安装,仅当做示例,生产环境需要将MySQL和JumpServer分开。 | IP | 系统 | 描述 | | --- | --- | --- | | 10.0.0.10 | Ubuntu22.04 | 用于安装MySQL | | 10.0.0.10 | Ubuntu22.04 | 用于安装JumpServer | ### 安装MySQL MySQL版本需要5.7版本及以上,这里推荐参考这篇文章进行搭建MySQL:[Linux系统搭建单机MySQL8.0.26版本](https://www.cnblogs.com/huangSir-devops/p/18848445 "Linux系统搭建单机MySQL8.0.26版本") 搭建完成数据库之后,需要执行下面的sql ```csharp create database jumpserver default charset 'utf8'; ``` 示例: ```csharp mysql> create database jumpserver default charset 'utf8'; Query OK, 1 row affected, 1 warning (0.01 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | jumpserver | # 创建的数据库 | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.03 sec) ``` ### 安装Redis Redis需要6.0版本以上,安装方式可以参考这篇文章:[Redis介绍及6.2.x版本安装](https://www.cnblogs.com/huangSir-devops/p/18884655 "Redis介绍及6.2.x版本安装") ### 安装Docker JumpServer启动依赖Docker,这里你可以选择安装或者不安装(不安装的话,安装jumpserver时会自动帮你安装)。 我们可以自己安装好对应的Docker服务,可以参考这篇文章:https://www.cnblogs.com/huangSir-devops/p/18822041#_label2 ### 安装JumpServer 下载前置工具 ```csharp apt-get update apt-get install -y wget curl tar gettext iptables ``` #### 在线安装 参考这篇文章:https://docs.jumpserver.org/zh/v4/installation/setup_linux_standalone/online_install/#1 #### 离线安装: 前往JumpServer官网下载安装包:https://community.fit2cloud.com/#/download/jumpserver/v4-10-0-lts 下载完成之后上传至服务器中解压即可,**我们这里使用离线安装** ```csharp # 我这里已经上传至服务器中了 [root@lb ~]# ll jumpserver-ce-v4.10.0-x86_64.tar.gz -rw-r--r-- 1 root root 1097249413 May 1 21:51 jumpserver-ce-v4.10.0-x86_64.tar.gz # 解压 [root@lb ~]# tar -xvf jumpserver-ce-v4.10.0-x86_64.tar.gz # 创建软连接 [root@lb ~]# ln -s jumpserver-ce-v4.10.0-x86_64 jumpserver ``` 修改配置文件 ```csharp # 修改配置文件 [root@lb ~/jumpserver]# vim config-example.txt # 主要修改以下基本内容 VOLUME_DIR=/data00/data/jumpserver # 可以用cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 50 | head -n 1 该命令生成 SECRET_KEY=k1Vx3xZScIbbbNamemXvZvtOmPJ4fJ3txO3ZLCXASEXvLyFK7K # 可以用cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1 该命令生产 BOOTSTRAP_TOKEN=aYoYCQKqta2SdAyF LOG_LEVEL=WARN # 数据库的配置 DB_ENGINE=mysql DB_HOST=10.0.0.10 DB_PORT=3306 DB_USER=root DB_PASSWORD=huangsir DB_NAME=jumpserver # redis的配置 REDIS_HOST=10.0.0.10 REDIS_PORT=6379 REDIS_PASSWORD=123456 # 启动后的http端口号 HTTP_PORT=1180 #指定 Jumpserver 可访问的域名或 IP 地址及端口,该值可以写多个,也可以配置你的域名 DOMAINS=10.0.0.10:1180 # 配置https请求,我这里没有配置 # HTTPS_PORT=443 # SERVER_NAME=your_domain_name # SSL_CERTIFICATE=your_cert # SSL_CERTIFICATE_KEY=your_cert_key ``` 创建jumpserver默认的目录,并将配置文件移动过去 ```csharp [root@lb ~/jumpserver]# mkdir -p /opt/jumpserver/config && cp /root/jumpserver/config-example.txt /opt/jumpserver/config/config.txt ``` 执行安装,会让你输入一些执行的参数 ```csharp [root@lb ~/jumpserver]# ./jmsctl.sh install 2. Configure Persistent Directory # 这里输入y Do you need custom persistent store, will use the default directory /data00/data/jumpserver? (y/n) (default n): y To modify the persistent directory such as logs video, you can select your largest disk and create a directory in it, such as /data/jumpserver Note: you can not change it after installation, otherwise the database may be lost Filesystem Size Used Avail Use% Mounted on /dev/mapper/ubuntu--vg-ubuntu--lv 47G 24G 21G 54% / # 直接回车 Persistent storage directory (default /data00/data/jumpserver): complete 3. Configure DB # 这里输入y Do you want to use external MySQL? (y/n) (default y): y # 这里可能会让你输入IP,你就输入配置文件中的IP即可,如果和我的一样,则直接回车 Please enter DB server IP (default 10.0.0.10): # 下面的四步直接回车 Please enter DB server port (default 3306): Please enter DB database name (default jumpserver): Please enter DB username (default root): Please enter DB password (default huangsir): complete 4. Configure Redis # 这里可以直接回车 Please enter Redis Engine? (redis/sentinel) (default redis): redis # 这里输入y Do you want to use external Redis? (y/n) (default y): y # 这里可能会让你输入IP,你就输入配置文件中的IP即可,如果和我的一样,则直接回车 Please enter Redis server IP (default 10.0.0.10): # 下面的两步直接回车 Please enter Redis server port (default 6379): Please enter Redis password (default 123456): complete 5. Configure External Access # 这里输入y Do you need to customize the JumpServer external port? (y/n) (default n): y # 直接回车即可 JumpServer web port (default 1180): complete ``` 最终没有报错,和我的截图一致,代表安装成功,如果有问题,可以参考文章最后的安装故障解决 ![image](https://cdn.res.knowhub.vip/c/2505/25/20448cb7.png?G1cAAMTsdJxI8hGl26hD2jvFHc2ARRpBpYT1es9Z%2byb6fgcjxWe0Pn1%2f%2bE3r00lTLqVcBIaxIQQkKIyzGoKo5YoqKnENBw%3d%3d) ### 启动JumpServer ```csharp # 没有报错代表启动成功 [root@lb ~/jumpserver]# ./jmsctl.sh start [+] Running 6/6 ✔ Container jms_lion Started 11.7s ✔ Container jms_chen Started 11.7s ✔ Container jms_web Started 11.8s ✔ Container jms_core Started 11.8s ✔ Container jms_celery Started 12.0s ✔ Container jms_koko Started # 验证一下容器的启动状态,这里需要等待几分钟之后,等待health: starting转为healthy [root@lb ~/jumpserver]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 93f7bbf1751d jumpserver/core:v4.10.0-ce "./entrypoint.sh sta…" 33 seconds ago Up 21 seconds (health: starting) 8080/tcp jms_celery 0441f6f225b0 jumpserver/web:v4.10.0-ce "/docker-entrypoint.…" 33 seconds ago Up 21 seconds (health: starting) 80/tcp, 0.0.0.0:1180->1180/tcp, [::]:1180->1180/tcp jms_web b0f855665246 jumpserver/core:v4.10.0-ce "./entrypoint.sh sta…" 33 seconds ago Up 21 seconds (health: starting) 8080/tcp jms_core 2b3d1ab4c968 jumpserver/koko:v4.10.0-ce "./entrypoint.sh ./k…" 33 seconds ago Up 21 seconds (health: starting) 0.0.0.0:2222->2222/tcp, [::]:2222->2222/tcp jms_koko c845d9807738 jumpserver/chen:v4.10.0-ce "./entrypoint.sh wisp" 33 seconds ago Up 21 seconds (health: starting) 8082/tcp jms_chen 4e8fba121f0e jumpserver/lion:v4.10.0-ce "./entrypoint.sh sup…" 33 seconds ago Up 21 seconds (health: starting) 8081/tcp jms_lion ``` ## 访问并配置JumpServer - 地址: http://<JumpServer服务器IP地址>:<服务运行端口> - 默认用户名: `admin` - 默认密码: `ChangeMe` 示例:http://10.0.0.10:1180/ ![image](https://cdn.res.knowhub.vip/c/2505/25/a8979691.png?G1cAAMTsdJzIS4Wk26hD2jvFHc2ARRpBpYT1es9Z%2byb6fmdwjs9offr%2b8JvWp9OVi6pWYrBAEAJLSlxEAQkMEzOrSHENBw%3d%3d) 登录之后需要重置密码,我这里修改为`huangsir` ![image](https://cdn.res.knowhub.vip/c/2505/25/9b65324c.png?G1cAAMTsdJxI8oS026hD2jvFHc2ARRpBpYT1es9Z%2byb6fgcjx2e0Pn1%2f%2bE3r0ynlYmaVwFBWhAAViEpCkiBWi%2bpVi8Q1HA%3d%3d) 然后会跳转到重新登录 ![image](https://cdn.res.knowhub.vip/c/2505/25/dd762416.png?G1cAAMTsdJxI8oK026hD2jvFHc2ARRpBpYT1es9Z%2byb6fgdD4zNan74%2f%2fKb16ZS0mFklMDJnhIAskAJJlYMYzC4panENBw%3d%3d) 最后我们就登录上来了 ![image](https://cdn.res.knowhub.vip/c/2505/25/3c879389.png?G1cAAMTXsx8n2j7qt41u6F3ikNAMWKQRVEpYr%2ffefRrR9xsY0T%2bzj2Xnw2%2f6WEYhplJKJjCUFS5ABZI0aI4OLMgSahW%2fpwE%3d) ## 安装JumpServer故障解决 ### 问题一:报连接数据库权限拒绝 ```csharp File "/opt/py3/lib/python3.11/site-packages/MySQLdb/__init__.py", line 121, in Connect return Connection(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/py3/lib/python3.11/site-packages/MySQLdb/connections.py", line 195, in __init__ super().__init__(*args, **kwargs2) django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'192.168.250.2' (using password: YES)") [ERROR] Failed to change the table structure! ``` ![image](https://cdn.res.knowhub.vip/c/2505/25/825ed884.png?G1cAAMTsdJwIn9Ck26hD2jvFHc2ARRpBpYT1es9Z%2byb6fkeCxGe0Pn1%2f%2bE3r04mlqupFSCipIAQIONesxThkY2aoicU1HA%3d%3d) 解决方式:连接数据库,创建用户 ```csharp # 登录MySQL,使用root账号 [root@lb ~/jumpserver]# mysql -uroot -phuangsir # 创建用户,192.168.250.0/24代表jumpserver的网段,只有在这个网段之内的IP才能连接数据库,密码设置为huangsir mysql> CREATE USER 'root'@'192.168.250.0/24' IDENTIFIED BY 'huangsir'; Query OK, 0 rows affected (0.01 sec) # 授权,*.*代表jumpserver库和其中所有的表 mysql> GRANT ALL PRIVILEGES ON jumpserver.* TO 'root'@'192.168.250.0/24' WITH GRANT OPTION; Query OK, 0 rows affected (0.00 sec) # 刷新权限 mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) ``` 最后重新执行`./jmsctl.sh install` ## 补充-JumpServer的相关命令 ```csharp cd jumpserver # 启动 ./jmsctl.sh start # 重启 ./jmsctl.sh restart # 停止 ./jmsctl.sh down # 卸载 ./jmsctl.sh uninstall # 帮助 ./jmsctl.sh -h ```