【Linux】jumpserver开源堡垒机部署

JumpServer 安装部署指南

本文档详细记录了 JumpServer 安装部署的过程、核心脚本功能说明以及后续管理使用提示,方便运维人员快速查阅和二次安装。


1. 前提条件

  • 操作系统要求:
    仅支持 Linux 系统,不支持 Darwin(macOS)。脚本内对 OS 类型进行了判断,若检测为 Darwin,则会中止执行。

  • 必备工具:
    脚本会自动检测并安装以下工具:

    • curl
    • wget
    • tar
    • iptables
      若系统中未安装上述命令,会尝试根据所使用的包管理器(dnf、yum、apt、zypper、apk)自动安装,不存在则报错退出。
  • 网络要求:
    确保服务器能够访问外部网络,以便下载脚本和安装包。


2. 脚本说明与准备工作

2.1 下载官方安装脚本

在 JumpServer 服务器上执行以下命令,下载官方安装脚本并保存为 install.sh

# 下载官方脚本文件
curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh >> ./install.sh
ls
cat install.sh

2.2 脚本结构解析

定义变量
  • VERSION
    当前版本号(例如 v4.8.1)。

  • DOWNLOAD_URL
    下载安装包的基础 URL。

安装依赖函数:install_soft

根据系统内置的包管理器(dnf、yum、apt、zypper、apk),检测并安装缺失的软件包;同时针对 apk 的情况,额外安装 gettext-devpython3,确保依赖完整。

依赖检查函数:prepare_install

遍历检查所需的工具(curl、wget、tar、iptables),若不存在则调用 install_soft 自动安装。

获取安装器函数:get_installer
  • 进入 /opt 目录,在该目录下创建或使用 jumpserver-installer-${VERSION} 文件夹。
  • 使用 wget 下载相应版本的安装包(tar.gz 格式),并在 60 秒内限时下载。
  • 下载成功后解压安装包至 /opt 目录,解压失败则清理并退出提示错误。
配置与启动函数:config_installer
  • 进入安装包所在目录 /opt/jumpserver-installer-${VERSION}
  • 修改配置示例文件,将 # DOCKER_IMAGE_MIRROR=1 替换为 DOCKER_IMAGE_MIRROR=1,启用 Docker 镜像加速。
  • 依次调用 ./jmsctl.sh install 进行安装配置,再调用 ./jmsctl.sh start 启动服务。
主程序 main
  • 判断是否在 Darwin 系统下运行(若是则退出)。
  • 执行依赖检查、下载安装包及配置安装步骤。

脚本结构如下:

#!/usr/bin/env bashVERSION=v4.8.1
DOWNLOAD_URL=https://resource.fit2cloud.comfunction install_soft() {if command -v dnf &>/dev/null; thendnf -q -y install "$1"elif command -v yum &>/dev/null; thenyum -q -y install "$1"elif command -v apt &>/dev/null; thenapt-get -qqy install "$1"elif command -v zypper &>/dev/null; thenzypper -q -n install "$1"elif command -v apk &>/dev/null; thenapk add -q "$1"command -v gettext &>/dev/null || {apk add -q gettext-dev python3}elseecho -e "[\033[31m ERROR \033[0m] $1 command not found, Please install it first"exit 1fi
}function prepare_install() {for i in curl wget tar iptables; docommand -v $i &>/dev/null || install_soft $idone
}function get_installer() {echo "download install script to /opt/jumpserver-installer-${VERSION}"cd /opt || exit 1if [ ! -d "/opt/jumpserver-installer-${VERSION}" ]; thentimeout 60 wget -qO jumpserver-installer-${VERSION}.tar.gz ${DOWNLOAD_URL}/jumpserver/installer/releases/download/${VERSION}/jumpserver-installer-${VERSION}.tar.gz || {rm -f /opt/jumpserver-installer-${VERSION}.tar.gzecho -e "[\033[31m ERROR \033[0m] Failed to download jumpserver-installer-${VERSION}"exit 1}tar -xf /opt/jumpserver-installer-${VERSION}.tar.gz -C /opt || {rm -rf /opt/jumpserver-installer-${VERSION}echo -e "[\033[31m ERROR \033[0m] Failed to unzip jumpserver-installer-${VERSION}"exit 1}rm -f /opt/jumpserver-installer-${VERSION}.tar.gzfi
}function config_installer() {cd /opt/jumpserver-installer-${VERSION} || exit 1sed -i "s/# DOCKER_IMAGE_MIRROR=1/DOCKER_IMAGE_MIRROR=1/g" /opt/jumpserver-installer-${VERSION}/config-example.txt./jmsctl.sh install./jmsctl.sh start
}function main(){if [[ "${OS}" == 'Darwin' ]]; thenechoecho "Unsupported Operating System Error"exit 1fiprepare_installget_installerconfig_installer
}main

3. 安装执行过程

3.1 执行安装脚本

运行以下命令启动安装流程:

bash install.sh

安装过程会输出相关信息,例如:

#执行安装脚本
root@jumpserver:~> bash install.sh
download install script to /opt/jumpserver-installer-v4.8.1██╗██╗   ██╗███╗   ███╗██████╗ ███████╗███████╗██████╗ ██╗   ██╗███████╗██████╗██║██║   ██║████╗ ████║██╔══██╗██╔════╝██╔════╝██╔══██╗██║   ██║██╔════╝██╔══██╗██║██║   ██║██╔████╔██║██████╔╝███████╗█████╗  ██████╔╝██║   ██║█████╗  ██████╔╝██   ██║██║   ██║██║╚██╔╝██║██╔═══╝ ╚════██║██╔══╝  ██╔══██╗╚██╗ ██╔╝██╔══╝  ██╔══██╗╚█████╔╝╚██████╔╝██║ ╚═╝ ██║██║     ███████║███████╗██║  ██║ ╚████╔╝ ███████╗██║  ██║╚════╝  ╚═════╝ ╚═╝     ╚═╝╚═╝     ╚══════╝╚══════╝╚═╝  ╚═╝  ╚═══╝  ╚══════╝╚═╝  ╚═╝Version:  v4.8.1-ce1. Check Configuration File
Path to Configuration file: /opt/jumpserver/config
/opt/jumpserver/config/config.txt        []
/opt/jumpserver/config/loki/promtail.yml         []
/opt/jumpserver/config/nginx/cert/server.crt     []
/opt/jumpserver/config/nginx/cert/server.key     []

安装脚本会引导完成多个配置步骤:

  1. 配置私钥(SECRETE_KEY 与 BOOTSTRAP_TOKEN)
    会自动生成后显示在提示中,直接按回车确认(如果不需要自定义修改)。

  2. 配置持久化目录

    • 默认目录为 /data/jumpserver
    • 如需自定义,建议选择磁盘空间充足的盘符,但注意:安装后不可更改!
  3. 数据库配置

    • 是否使用外部 PostgreSQL(默认内置)
  4. Redis 配置

    • 配置 Redis 引擎模式(redis/sentinel)
    • 是否使用外部 Redis:若选择外部,则需提供服务器 IP、端口和密码
  5. 外部访问配置

    • 是否修改默认的外部访问端口(默认端口 80)
  6. 初始化数据库
    安装过程中会启动容器并完成数据库初始化、静态文件收集和数据迁移。

>>> Install and Configure JumpServer
1. Configure Private Key
SECRETE_KEY:     3e1e8dea32665fe01eed82a44b52a90556c0a7f61cf91a79
BOOTSTRAP_TOKEN: zZEHIGACppkAaC123RED0ywp
complete2. Configure Persistent Directory
Do you need custom persistent store, will use the default directory /data/jumpserver? (y/n)  (default n): yTo 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 lostFilesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv   96G   11G   81G  12% /Persistent storage directory (default /data/jumpserver):
complete3. Configure DB
Do you want to use external PostgreSQL? (y/n)  (default n):
complete4. Configure Redis
Please enter Redis Engine? (redis/sentinel)  (default redis):
Do you want to use external Redis? (y/n)  (default n): y
Please enter Redis server IP (default redis):
Please enter Redis server port (default 6379):
Please enter Redis password (no default):
complete5. Configure External Access
Do you need to customize the JumpServer external port? (y/n)  (default n):
complete6. Init JumpServer Database
[+] Running 4/4✔ Network jms_net           Created                                                                                                                                                                  0.1s✔ Container jms_redis       Started                                                                                                                                                                  0.8s✔ Container jms_core        Started                                                                                                                                                                  0.8s✔ Container jms_postgresql  Started                                                                                                                                                                  0.8s

4. 部署完成后的使用

安装流程结束后,会显示最终的账号信息和管理命令,示例如下:

4.1 默认账号信息

  • Web 访问地址:
    http://192.168.200.200:80

  • 默认账号:

    • 用户名:admin
    • 密码:ChangeMe

登录后如下
在这里插入图片描述

4.2 常用管理命令

所有容器和服务均由 /opt/jumpserver-installer-v4.8.1 下的 jmsctl.sh 脚本管理,常用命令包括:

# 启动 JumpServer
cd /opt/jumpserver-installer-v4.8.1
./jmsctl.sh start# 停止 JumpServer
./jmsctl.sh stop# 重启 JumpServer
./jmsctl.sh restart# 数据备份
./jmsctl.sh backup# 升级 JumpServer
./jmsctl.sh upgrade# 查看更多命令帮助
./jmsctl.sh --help

具体使用

可以参考我写的一篇openstack+jumpserver的文章,里面有介绍jumpserver的简单使用
【Project】基于OpenStack的公司云平台建设与管理方案

4.3 更多信息

  • 官方网站:
    https://www.jumpserver.org/

  • 文档:
    https://docs.jumpserver.org/

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

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

相关文章

餐饮厨房开源监控安全系统的智能革命

面对日益严格的合规要求和消费者对卫生的信任危机,传统人工监督已力不从心:卫生死角难发现、违规操作难追溯、安全隐患防不胜防。如何让后厨更透明、更安全、更可信?餐饮厨房视频安全系统横空出世!这套系统融合实时监控与AI技术&a…

HashMap为什么扩容为原来2倍呢?

1、减少哈希碰撞 核心原因:HashMap的所有设计都依赖于数组长度为2的幂次方这一前提。 索引计算使用 (n-1)&hash ,其中 n 是数组长度当 n 是 2 的幂次方时,n-1 的二进制形式是全 1(例如,15——>111…

debian系统中文输入法失效解决

在 Debian 9.6 上无法切换中文输入法的问题通常与输入法框架(如 Fcitx 或 IBus)的配置或依赖缺失有关。以下是详细的解决步骤: 1. 安装中文语言包 确保系统已安装中文语言支持: sudo apt update sudo apt install locales sudo…

3DGS之光栅化

光栅化(Rasterization)是计算机图形学中将连续的几何图形(如三角形、直线等)转换为离散像素的过程,最终在屏幕上形成图像。 一、光栅化的核心比喻 像画家在画布上作画 假设你是一个画家,要把一个3D立方体画…

学习51单片机Day02---实验:点亮一个LED灯

目录 1.先看原理图 2.思考一下(sbit的使用): 3.给0是要让这个LED亮(LED端口设置为低电平) 4.完成的代码 1.先看原理图 比如我们要让LED3亮起来,对应的是P2^2。 2.思考一下(sbit的使用&…

Redis与Lua原子操作深度解析及案例分析

一、Redis原子操作概述 Redis作为高性能的键值存储系统,其原子性操作是保证数据一致性的核心机制。在Redis中,原子性指的是一个操作要么完全执行,要么完全不执行,不会出现部分执行的情况。 Redis原子性的实现原理 单线程模型&a…

深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例

文章目录 深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例1. GLOG_minloglevel:最低日志等级控制2. GLOG_v:控制 VLOG() 的详细输出等级3. GLOG_minloglevel 与 GLOG_v 的优先级关系4. 使用示例4.1 基础示例:不同日志等级4.2…

Cline Memory Bank 结构化文档持久化 AI 上下文详解

🎮 什么是 Cline Memory Bank? Memory Bank 是一个结构化文档系统,允许 Cline 在会话之间保持上下文。它能让 Cline 从无状态的助手转变为持久记忆的开发伙伴,随着时间推移有效地“记住”项目细节。 🗡️ 关键优势 上…

【JavaScript】面向对象与设计模式

个人主页:Guiat 归属专栏:HTML CSS JavaScript 文章目录 1. JavaScript 中的面向对象编程1.1 对象基础1.2 构造函数1.3 原型和原型链1.4 ES6 类1.5 继承1.6 封装 2. 创建型设计模式2.1 工厂模式2.2 单例模式2.3 建造者模式2.4 原型模式 3. 结构型设计模式…

网络安全防护技术

边界安全防护——防火墙 控制:在网络连接点上建立一个安全控制点,对进出数据进行限制隔离:将需要保护的网络与不可信任网络进行隔离,隐藏信息并进行安全防护记录:对进出数据进行检查,记录相关信息 防火墙…

Spring MVC 视图解析器(JSP、Thymeleaf、Freemarker、 JSON/HTML、Bean)详解

Spring MVC 视图解析器详解 1. 视图解析器概述 视图解析器(ViewResolver)是 Spring MVC 的核心组件,负责将控制器返回的视图名称(如 success)转换为具体的 View 对象(如 Thymeleaf 模板或 JSP 文件&#x…

# 爬虫技术的实现

手把手教你网络爬虫:从入门到实践 一、网络爬虫简介 网络爬虫(Web Crawler)是一种自动化获取互联网数据的程序,广泛应用于搜索引擎、数据分析、市场调研等领域。通过模拟浏览器行为,爬虫可以高效地从网页中提取结构化…

【HarmonyOS 5】鸿蒙中@State的原理详解

一、State在鸿蒙中是做什么的? State 是 HarmonyOS ArkTS 框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动 UI 的响应式编程模式。通过将变量标记为 State,开发者可以确保当状态值发生变化时,依赖该状态的 UI 组件…

influxdb数据导出笔记

influx query ‘from(bucket: “byt-grid-data”) |> range(start: 2025-04-01T00:00:00Z, stop: 2025-04-02T23:59:59Z) |> filter(fn: > r[“_measurement”] “byt-gzsn-hsxn-sc-dcs”) |> filter(fn: > r[“_field”] “F_ACT_FZZ02_FB_O”) |> filt…

HTTP Content-Type:深入解析与应用

HTTP Content-Type:深入解析与应用 引言 在互联网世界中,数据传输是至关重要的。而HTTP协议作为最常用的网络协议之一,其在数据传输过程中扮演着关键角色。其中,HTTP Content-Type头字段在数据传输中发挥着至关重要的作用。本文将深入解析HTTP Content-Type,并探讨其在实…

使用SQL查询ES数据

使用SQL查询ES数据 32 进阶:使用SQL查询ES数据环境准备利用脚本导入测试数据 SQL学习基本查询排序查询过滤查询范围查询分组查询(group)分组过滤查询(grouphaving)聚合函数统计limit查询分页查询 32 进阶:使用SQL查询ES数据 环境准备 需要首先安装ES8.…

禁止页面滚动的方法-微信小程序

在微信小程序中,有几种方法可以禁止页面滚动: 一、通过页面配置禁止滚动 在页面的JSON配置文件中设置,此方法完全禁止页面的滚动行为: {"disableScroll": true }二、通过 CSS 样式禁止滚动 在页面的WXSS文件中添加&…

用户画像(https://github.com/memodb-io/memobase)应用

1.下载项目的源代码,我们要先启动后端,用docker启动 cd src/server cp .env.example .env cp ./api/config.yaml.example ./api/config.yaml 这里我的配置内容如下config.yaml(因为我是调用的符合openai格式的大模型,所以我没改,如果要是别的大模型的话,需要自己再做兼容…

微信小程序生成某个具体页面的二维码

微信小程序,如果要生成某个具体页面,而非首页的二维码,体验和正式的生成方法如下: 1、体验版二维码: 管理---版本管理---修改页面路径,输入具体页面的路径以及参数,生成的是二维码 2、正式小程…

【今日三题】小乐乐改数字 (模拟) / 十字爆破 (预处理+模拟) / 比那名居的桃子 (滑窗 / 前缀和)

⭐️个人主页:小羊 ⭐️所属专栏:每日两三题 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 小乐乐改数字 (模拟)十字爆破 (预处理模拟)比那名居的桃子 (滑窗 / 前缀和) 小乐乐改数字 (模拟) 小乐乐改数字…