千家信息网

Jumpserver一站式部署安装

发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,前言我们对堡垒机(跳板机)不会陌生,为了保证服务器安全,加个堡垒机,所有ssh连接都通过堡垒机来完成,堡垒机也需要有身份认证、授权、访问控制、审计等功能。Jumpserver 是全球首款完全开源的堡垒
千家信息网最后更新 2025年12月04日Jumpserver一站式部署安装

前言

我们对堡垒机(跳板机)不会陌生,为了保证服务器安全,加个堡垒机,所有ssh连接都通过堡垒机来完成,堡垒机也需要有身份认证、授权、访问控制、审计等功能。

Jumpserver 是全球首款完全开源的堡垒机, 是符合 4A 的专业运维审计系统。

Jumpserver 使用 Python / Django 进行开发, 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制。

Jumpserver 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。

架构说明

架构示意图如下:

Jumpserver包含四个组件,各个组件的作用如下:

  • Jumpserver 为管理后台, 管理员可以通过 Web 页面进行资产管理、用户管理、资产授权等操作, 用户可以通过 Web 页面进行资产登录, 文件管理等操作
  • Coco 为 SSH Server 和 Web Terminal Server 。用户可以使用自己的账户通过 SSH 或者 Web Terminal 访问 SSH 协议和 Telnet 协议资产
  • Luna 为 Web Terminal Server 前端页面, 用户使用 Web Terminal 方式登录所需要的组件
  • Guacamole 为 RDP 协议和 VNC 协议资产组件, 用户可以通过 Web Terminal 来连接 RDP 协议和 VNC 协议资产 (暂时只能通过 Web Terminal 来访问)

端口说明

各个组件的监听端口如下:

  • Jumpserver 默认端口为 8080/tcp 配置文件 jumpserver/config.yml
  • Coco 默认 SSH 端口为 2222/tcp, 默认 Web Terminal 端口为 5000/tcp 配置文件在 coco/config.yml
  • Guacamole 默认端口为 8081/tcp, 配置文件 /config/tomcat8/conf/server.xml
  • Nginx 默认端口为 80/tcp
  • Redis 默认端口为 6379/tcp
  • Mysql 默认端口为 3306/tcp

这篇博文将采用一站式的方式部署Jumpserver,其实更建议取参考官方文档部署Jumpserver。


博文大纲:
一、环境准备
二、配置Python 3环境
三、安装Jumpserver
四、安装MySQL及Redis
五、安装配置coco组件
六、安装guacamole及luna
七、安装Nginx
八、Client访问测试

一、环境准备

  • 系统:CentOS 7
  • IP:192.168.20.3
  • 数据库:mariadb
  • 反向代理:nginx

注:若是测试环境,内存最少4G,双核CPU。

在进行下面的操作前,请下载我提供的各个源码包。

首先将环境字体设置成中文,因为jumpserver的日志文件里面的内容会包含中文字符,不支持可能会乱码。

[root@jumpserver ~]# localedef -c -f UTF-8 -i  zh_CN  zh_CN.UTF-8[root@jumpserver ~]# export LC_ALL=zh_CN.UTF-8[root@jumpserver ~]# echo 'LC_ALL=zh_CN.UTF-8' > /etc/locale.conf 

二、配置Python 3环境

[root@jumpserver ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo[root@jumpserver ~]# yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git[root@jumpserver ~]# tar xf Python-3.6.1.tar.xz -C /usr/src[root@jumpserver ~]# cd /usr/src/Python-3.6.1/[root@jumpserver Python-3.6.1]# ./configure && make && make install[root@jumpserver Python-3.6.1]# cd /opt[root@jumpserver opt]# python3 -m venv py3[root@jumpserver opt]# source /opt/py3/bin/activate   #设置自动载入py3虚拟环境(以后只要进入这个目录就是Py3的环境)(py3) [root@jumpserver opt]# unzip autoenv.zip (py3) [root@jumpserver opt]# echo "source /opt/autoenv/activate.sh" >> /root/.bashrc(py3) [root@jumpserver opt]# . ~/.bashrc 

三、安装Jumpserver

(py3) [root@jumpserver opt]# unzip jumpserver.zip (py3) [root@jumpserver opt]#  echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env(py3) [root@jumpserver opt]# cd jumpserver/autoenv:autoenv: WARNING:autoenv: This is the first time you are about to source /opt/jumpserver/.env:autoenv:autoenv:   --- (begin contents) ---------------------------------------autoenv:     source /opt/py3/bin/activate$autoenv:autoenv:   --- (end contents) -----------------------------------------autoenv:autoenv: Are you sure you want to allow this? (y/N) y   #这里输入"y",以便自动载入py3环境(py3) [root@jumpserver jumpserver]# cd requirements/(py3) [root@jumpserver requirements]# yum -y install $(cat rpm_requirements.txt)(py3) [root@jumpserver requirements]# pip install --upgrade pip(py3) [root@jumpserver requirements]# pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

四、安装MySQL及Redis

#安装MySQL(py3) [root@jumpserver requirements]# yum -y install mariadb*(py3) [root@jumpserver requirements]# systemctl start mariadb(py3) [root@jumpserver requirements]# mysqladmin -u root password 123.com(py3) [root@jumpserver requirements]# mysql -u root -p123.comMariaDB [(none)]> create database jumpserver default charset 'utf8' ;MariaDB [(none)]> grant all on jumpserver.* to jumpserver@127.0.0.1 identified by '123.com';#安装Redis(py3) [root@jumpserver ~]# yum -y install redis(py3) [root@jumpserver ~]# systemctl start redis(py3) [root@jumpserver ~]# netstat -anput | grep 6379#修改jumpserver配置文件(py3) [root@jumpserver ~]# cd /opt/jumpserver/(py3) [root@jumpserver jumpserver]# cp config_example.yml config.yml #生成秘钥令牌(py3) [root@jumpserver jumpserver]# SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`(py3) [root@jumpserver jumpserver]# echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc(py3) [root@jumpserver jumpserver]# BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`(py3) [root@jumpserver jumpserver]# echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc(py3) [root@jumpserver jumpserver]# sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g" /opt/jumpserver/config.yml(py3) [root@jumpserver jumpserver]# sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml(py3) [root@jumpserver jumpserver]# sed -i "s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml(py3) [root@jumpserver jumpserver]# sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml(py3) [root@jumpserver jumpserver]# sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: False/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml (py3) [root@jumpserver jumpserver]# sed -i "s/DB_PASSWORD: /DB_PASSWORD: 123.com/g" /opt/jumpserver/config.yml(py3) [root@jumpserver jumpserver]# echo -e "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m" 你的SECRET_KEY是 Z6bUvXTZRpc73pnRp4qNwn1eMWNYrgzbEWkVJqIVXc6cXfpKDU (py3) [root@jumpserver jumpserver]# echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m" 你的BOOTSTRAP_TOKEN是 aGXZtXKnhP3StNA3 (py3) [root@jumpserver jumpserver]# egrep -v '^$|^#' config.yml     #确定配置文件修改无误SECRET_KEY: jS1ph0yvliBHdMV7YopAkBrEdIkZ3DjAq6HsftIPpQriNNBO2kBOOTSTRAP_TOKEN: fUXgq00wg6XCD5lpDEBUG: falseLOG_LEVEL: ERRORSESSION_EXPIRE_AT_BROWSER_CLOSE: trueDB_ENGINE: mysqlDB_HOST: 127.0.0.1DB_PORT: 3306DB_USER: jumpserverDB_PASSWORD: 123.comDB_NAME: jumpserverHTTP_BIND_HOST: 0.0.0.0HTTP_LISTEN_PORT: 8080REDIS_HOST: 127.0.0.1REDIS_PORT: 6379(py3) [root@jumpserver jumpserver]# ./jms start all -d    #启动jumpserver(py3) [root@jumpserver jumpserver]# netstat -anpt | grep 8080tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      17420/python3       

五、安装配置coco组件

(py3) [root@jumpserver opt]# unzip coco.zip (py3) [root@jumpserver opt]# cd coco(py3) [root@jumpserver coco]# echo "source /opt/py3/bin/activate" > /opt/coco/.env(py3) [root@jumpserver coco]# cd requirements/autoenv:autoenv: WARNING:autoenv: This is the first time you are about to source /opt/coco/.env:autoenv:autoenv:   --- (begin contents) ---------------------------------------autoenv:     source /opt/py3/bin/activate$autoenv:autoenv:   --- (end contents) -----------------------------------------autoenv:autoenv: Are you sure you want to allow this? (y/N) y   #输入"y"(py3) [root@jumpserver requirements]# yum -y install $(cat rpm_requirements.txt)(py3) [root@jumpserver requirements]# pip install -r requirements.txt#修改配置文件(py3) [root@jumpserver requirements]# cd ..(py3) [root@jumpserver coco]# cp config_example.yml config.yml (py3) [root@jumpserver coco]# echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m"#查看BOOTSTRAP_TOKEN的值 你的BOOTSTRAP_TOKEN是 fUXgq00wg6XCD5lp  #注意,执行下面的命令时,需要自行修改为自己查看出来的值:(py3) [root@jumpserver coco]# sed -i 's/BOOTSTRAP_TOKEN: /BOOTSTRAP_TOKEN: fUXgq00wg6XCD5lp/g' config.yml (py3) [root@jumpserver coco]# sed -i 's/# LOG_LEVEL: INFO/LOG_LEVEL: ERROR/g' config.yml (py3) [root@jumpserver coco]# egrep -v '^$|^#' config.yml    #确定修改的配置文件CORE_HOST: http://127.0.0.1:8080BOOTSTRAP_TOKEN: fUXgq00wg6XCD5lpLOG_LEVEL: ERROR#后台启动coco(py3) [root@jumpserver coco]# ./cocod start -d

六、安装guacamole及luna

这里采用docker容器的方式部署。

#部署docker环境(py3) [root@jumpserver ~]# yum install -y yum-utils device-mapper-persistent-data lvm2(py3) [root@jumpserver ~]# yum-config-manager  --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(py3) [root@jumpserver ~]# yum makecache fast(py3) [root@jumpserver ~]# yum -y install docker-ce(py3) [root@jumpserver ~]# systemctl start docker(py3) [root@jumpserver ~]# docker load  --input guacamole.tar#启动容器(py3) [root@jumpserver ~]# docker  run   --name  jms_guacamole   -d -p  8081:8080 -v /opt/guacamole/key:/config/guacamole/key  -e JUMPSERVER_KEY_DIR=/config/guacamole/key -e JUMPSERVER_SERVER=http://192.168.10.8:8080 jumpserver/guacamole:latest(py3) [root@jumpserver ~]# netstat -anput | grep 8081   #确定端口在监听tcp6       0      0 :::8081                 :::*                    LISTEN      19162/docker-proxy  (py3) [root@jumpserver ~]# tar zxf luna.tar.gz -C /opt/    #将luna解压至/opt

七、安装Nginx

(py3) [root@jumpserver /]# tar zxf nginx-1.2.4.tar.gz -C /usr/src(py3) [root@jumpserver /]# cd /usr/src/nginx-1.2.4/(py3) [root@jumpserver nginx-1.2.4]# ./configure --prefix=/usr/local/nginx && make && make install(py3) [root@jumpserver nginx-1.2.4]# ln -sf /usr/local/nginx/sbin/nginx /usr/local/bin/(py3) [root@jumpserver nginx-1.2.4]# cd /usr/local/nginx/conf/(py3) [root@jumpserver conf]# mv nginx.conf nginx.conf.bak(py3) [root@jumpserver conf]# rz    #上传我提供的Nginx配置文件(py3) [root@jumpserver conf]# ls | grep nginx.confnginx.conf     #在博文开头的网盘链接中有此文件nginx.conf.baknginx.conf.default(py3) [root@jumpserver conf]# nginx -t     #确定Nginx配置无误nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful(py3) [root@jumpserver conf]# nginx     #启动Nginx

八、Client访问测试

访问Nginx服务器的IP地址,即可看到登录页面(默认用户名及密码都是"admin"):

1、创建用户

2、创建管理用户

3、创建系统用户

用户名尽量为root,选择手动登录,这个用户是用来连接后端资产的。

4、创建资产

我这里启动了一台IP为192.168.20.4的主机来作为后端资产,以便测试。

5、创建授权规则

6、连接后端资产测试

-------- 本文至此结束,感谢阅读 --------

配置 文件 用户 资产 环境 端口 组件 管理 堡垒 测试 登录 页面 可以通过 方式 架构 系统 支持 后台 容器 服务器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 联想rs240服务器 广州探途网络技术有限公司法务 梅州虚拟服务器管理软件 网络安全法网络营运者 河南数据传输网络技术 映射后内网怎么访问服务器地址 港服ps4实况足球连不上服务器 镜像数据库不包括 网络安全防护话题 怎么将后台服务器和前端联系起来 网络安全管理软件 惠普服务器固件在哪下载 山东大禹治水网络技术有限公司 深圳新九州网络技术有限公司 美国网络安全事件等级划分 朝阳区网络营销网络技术咨询 usp39数据库 大连购物软件开发 高校校园网络安全教育平台 网络安全编程非阻塞模式开发 Arcgis数据库失败 密码错误 秋日森林服务器多少钱 广东互联网网络技术服务哪家好 更改sql数据库 所有者 服务器云服务 河南医联体网络技术 电视服务器停止运行怎么办 软件开发是不是都需要服务器 数据库的存储单元 怎么看数据库的字段长度
0