前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jumpserver堡垒机搭建

jumpserver堡垒机搭建

原创
作者头像
不凡
修改2022-06-22 11:52:37
7820
修改2022-06-22 11:52:37
举报
文章被收录于专栏:运维小郭运维小郭

一.环境要求

硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低)
操作系统: Linux 发行版 x86_64

Python = 3.6.x
Mysql Server ≥ 5.6
Mariadb Server ≥ 5.5.56
Redis

二.基于docker部署

首先部署docker
yum install -y yum-utils device-mapper-persistent-data lvm2

wget -O /etc/yum.repos.d/aliyun.base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo 
yum -y install docker-ce-18.09.9-3.el7

# 启动docker,并设置docker开机自启 
systemctl start docker && systemctl enable docker 
# 配置加速,并设置驱动     
cat << EOF > /etc/docker/daemon.json 
{
    "registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
javascript:;
# 加载daemon并重启docker
systemctl daemon-reload && systemctl restart docker 

三.部署mysql容器服务

#从上面的环境要求我们看出,jumpserver依赖的外置数据库服务有版本要求,我们这里从官方容器仓库中直接拉取mysql5.7版本的镜像。
  docker pull mysql:5.7
 
   #我们在宿主机上准备好mysql的配置文件和数据存放目录,后面mysql容器启动的时候直接挂载宿主机目录,使数据保存在宿主机,实现数据和容器的分离,
可以在容器运行异常时,可以再启动一个新的容器直接使用宿主机的数据,从而保证业务的正常运行。
 mkdir /iflytek/mysql/mysql.conf.d -pv
 mkdir /iflytek/mysql/conf.d -p
 mkdir /iflytek/mysql/data
 vim /iflytek/mysql/mysql.conf.d/mysqld.cnf 
     [mysqld]
      pid-file    = /var/run/mysqld/mysqld.pid
      socket        = /var/run/mysqld/mysqld.sock
      datadir        = /var/lib/mysql
     #log-error    = /var/log/mysql/error.log
     # By default we only accept connections from localhost
     #bind-address    = 127.0.0.1
     # Disabling symbolic-links is recommended to prevent assorted security risks
     symbolic-links=0
 
 vim  /iflytek/mysql/conf.d/mysql.cnf 
    [mysql]
     default-character-set=utf8
#启动Mysql容器,挂载上面准备好的配置文件和数据存放目录。然后通过-e MYSQL_ROOT_PASSWORD指定启动的mysql的root密码
[root@jumpserver-no ~]# docker run -it -d -p 3306:3306 -v /iflytek/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /iflytek/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf -v /iflytek/mysql/data/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="ming1128" mysql:5.7
#安装mysql客户端,测试访问容器数据库是否正常(换一台服务器)
  yum install -y mariadb
  mysql -h 10.111.3.55  -pming1128
 mysql> show databases;
 
 #验证数据库的字符编码是否符合要求,jumpserver要求数据库字符编码为utf8,不然后面web显示可能会有问题
 show global variables where variable_name like 'character%';
 
 #创建jumpserver数据库,并指定字符编码
mysql> create database jumpserver default charset 'utf8' collate 'utf8_bin';

#创建jumpserver访问用户,并赋权。
mysql> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'ming1128';


 #验证jumpserver用户授权是否成功
 mysql -ujumpserver -pming1128 -h192.168.10.2
    mysql> show databases;

四.部署redis容器服务

#直接从官方仓库拉取redis镜像,并启动
[root@jumpserver-no ~]# docker pull redis:4.0.14
[root@jumpserver-no ~]# docker run -it -d -p 6379:6379 redis:4.0.14
9cb2b24d2008a541635dc5f9fd21b843cb3c6e04517192ab7442e4eea9d66521
#安装redis,并测试访问redis容器服务,这里还可以设置一个redis的数据库密码,我这里就没设了,设不设问题不大,不过为了安全建议设
# 客户端验证:
[root@jumpserver-no ~]# wget -O /etc/yum.repos.d/aliyun.epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@jumpserver-no ~]# yum install redis -y
[root@jumpserver-no ~]# redis-cli -h 192.168.10.2
172.31.242.80:6379> info
# Server
redis_version:4.0.14
redis_git_sha1:00000000
.......

4.生成随机加密秘钥和初始化token

#我这里通过脚本直接生成。
[root@jumpserver-no ~]# vim random_encryption.sh 
#/bin/bash

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
[root@jumpserver-no ~]# bash random_encryption.sh 
Ty79C2b0CUgYHVDI6nog9hx0Mx55skIXP4piiSHtY1KKtD8Vt6
tFG4SfQae8L0Fzwn

五.部署jumpserver容器服务

#从网上直接拉取最新的jumpserver镜像
[root@jumpserver-no ~]# docker pull jumpserver/jms_all:latest
[root@jumpserver-no ~]# docker image list
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
mysql                     5.7                 718a6da099d8        2 days ago          448MB
jumpserver/jms_all        latest              6e51b94ef54d        2 days ago          1.48GB
redis                     4.0.14              191c4017dcdd        3 months ago        89.3MB
centos/mysql-57-centos7   latest              f83a2938370c        10 months ago       452MB
#通过镜像,启动jumpserver
[root@jumpserver-no ~]# docker run --name PL_jumpserver -d \
> -v /iflytek/jumpserver:/opt/jumpserver/data/media \
> -p 80:80 \
> -p 2222:2222 \
> -e SECRET_KEY=Ty79C2b0CUgYHVDI6nog9hx0Mx55skIXP4piiSHtY1KKtD8Vt6 \     #这里填的是上面生成的秘钥
> -e BOOTSTRAP_TOKEN=tFG4SfQae8L0Fzwn \                                  #这里上面生成的Token
> -e DB_HOST=192.168.10.2 \                 #指定mysql服务的地址,因为我这里是本机,所以直接填本机地址就可以了,如果是在别的机器部署的mysql,就填mysql所在地址就可以了
> -e DB_PORT=3306 \                  #mysql开发的端口号  
> -e DB_USER=jumpserver \            #对数据库上的jumpserver数据库有权限的用户
> -e DB_PASSWORD=ming1128 \          #上面用户的密码
> -e DB_NAME=jumpserver \            #指定在mysql上的数据库名。
> -e REDIS_HOST=192.168.10.2 \      #redis服务的地址
> -e REDIS_PORT=6379 \               #redis开放的端口号
> -e REDIS_PASSWORD= \               #redis数据库密码,因为我上面没有设密码,所以我这里直接为空就可以了,如果设了密码,就输入密码就行了
> jumpserver/jms_all:latest


docker run --name PL_jumpserver -d -v /iflytek/jumpserver:/opt/jumpserver/data/media  -p 80:80  -p 2222:2222 -e SECRET_KEY=T0mjL57kIWfQ80FAvNnwAxDwuylsQCVHlGz3JdihktJYU7CasJ -e BOOTSTRAP_TOKEN=KPOCNe9vNaJhR903   -e DB_HOST=192.168.10.2  -e DB_PORT=3306   -e DB_USER=jumpserver  -e DB_PASSWORD=ming1128 -e DB_NAME=jumpserver    -e REDIS_HOST=192.168.10.2   -e REDIS_PORT=6379  -e REDIS_PASSWORD=  jumpserver/jms_all:latest  

启动完之后。我们进入数据库,验证数据库内容,看jumpserver数据是否写入到数据库中的。

[root@jumpserver-no ~]# mysql -uroot -pming1128 -h 192.168.10.2
mysql> use jumpserver;
mysql> show tables;

至此,服务部署完成,如果想看容器日志信息的话可以执行下面的命令

进入容器命令 docker exec -it jms_all /bin/bash

下面我们可以访问web界面进行使用了

6.Jumpserver管理员的使用

1.Jumpserver的登录

3.创建相关用户,资产并进行相关授权操作

创建jumpserver登录用户

 创建管理员用户

 创建系统用户

 创建资产

资产授权

使用xshell登录

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.环境要求
  • 四.部署redis容器服务
  • 4.生成随机加密秘钥和初始化token
  • 五.部署jumpserver容器服务
  • 1.Jumpserver的登录
  • 3.创建相关用户,资产并进行相关授权操作
  • 使用xshell登录
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档