开源 JumpServer 容器化部署(Docker)(基于mysql8.0.x)

  前言

在我之前的博文中有过详细的部署程,不那是以源码的形式行部署的,大家感趣的可以去看一看——《JumpServer 开源堡垒机部署(源码)》。源形式的部署可能会遇到很多问题,不过这问题都很容易解决,大家如果想感受其工作程的,可以尝试以源方式行部署。本次和大家分享的是以 Docker 方式部署的完整程,以及部署过程中需要注意的一些点。 

一、规划

1、服规划

OS

Server

Ubuntu 18.04192.168.1.146

JumpServerMySQLRedis

JumpServer

Ubuntu 18.04192.168.1.144

SSHD

 SSH 测试

window 10192.168.1.71

RPD

 RPD 测试

2、源清单 

  • Ubuntu

Version:18.04.6 LTS

Install(官方): https://ubuntu.com/download

Install(ISO):

软件版本

Version:18.06.3-ce

Install:Install Docker Engine on Ubuntu | Docker Documentation

JumpServer

Version:2.16.0

Installdocker pull xxx

MySQL

Version8.0.27

Installdocker pull xxx

 JumpServer 2.16.0  MySQL>= 5.7.8

Redis

Version6.2.6

Installdocker pull xxx

二、部署

2.1 Docker 部署

  1、卸载旧版本(或已存在的残余 Docker)

sudo apt-get remove docker docker-engine docker.io containerd runc

2、安装必要依赖 

sudo apt-get update

sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common 

3、安装GPG证书

sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -  

4 写入件源信息

如果使用官方的话,安装 Docker 就会非常慢,所以建议缓存国内源。

sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

5、安装 Docker-CE

  • 安装最新版

sudo apt-get -y update

sudo apt-get -y install docker-ce

  • 安装指定版本(推荐-根据实际场选择)

# apt源中的docker版本

apt-cache madison docker-ce

...

docker-ce | 18.06.3~ce~3-0~ubuntu | https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages

docker-ce | 18.06.2~ce~3-0~ubuntu | https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages

docker-ce | 18.06.1~ce~3-0~ubuntu | https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages

...

# 安装指定版本

sudo apt-get -y install docker-ce=18.06.3~ce~3-0~ubuntu

 6、启 Docker

# 一般安装完成后就会启

sudo systemctl start docker.service

sudo systemctl enable docker.service

sudo systemctl status docker.service

7、添加当前用 Docker

方便直接 docker,而不需要加 sudo docker

 sudo usermod -a -G docker $USER

8、添加加速器

# 添加阿里加速

sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://q1rw9tzz.mirror.aliyuncs.com"]

}

EOF

# 重启Docker

sudo systemctl daemon-reload

sudo systemctl restart docker

2.2 MySQL 部署

1建数据目

sudo mkdir -p /data/mysql/data 

 2pull

sudo docker pull mysql:8.0.27

3、运行容器

sudo docker run -itd --name mysql --net=host --restart=always -e MYSQL_ROOT_PASSWORD=chang@123 -p 3306:3306 -v /data/mysql/data:/var/lib/mysql mysql:8.0.31 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 

4、看容器状态

sudo docker ps 

5、建数据及程序用户

  • 登录数据库

sudo docker exec -it mysql /bin/bash

mysql -uroot -pchang@123

  • 建数据

create database jumpserver default charset 'utf8mb4';

create database jumpserver default charset 'utf8'

  • 建程序用

create user 'jumpserver'@'%' identified with 'mysql_native_password' by 'love-520';

  • 户对应数据

 grant all on jumpserver.* to 'jumpserver'@'%';

mysql8.0+建用和授权须分开行。

  •  刷新授权表
  • flush privileges; 

 6mysql8.0修改root账号密码

 use mysql;

update user set authentication_string='' where user='root';

--将字段置为空

ALTER user 'root'@'localhost' IDENTIFIED BY 'love-520';

--修改密码为root 

2.3 Redis 部署

1、建数据目录

sudo mkdir -p /data/redis/data

2、pull 镜像

sudo docker pull redis:6.2.6

3、运行容器

sudo docker run -itd --name redis --net=host -p 6379:6379 -v /data/redis/data:/data --restart=always  redis --requirepass "love-520"

4、看容器状态

sudo docker ps  

2.4 JumpServer 部署

1、建数据目录

sudo mkdir -p /data/jumpserver

2、pull 镜像

sudo docker pull jumpserver/jms_all

3、运行容器

docker run -itd --name jumpserver --net=host -h jumpserver --restart=always  \

-v /data/jumpserver:/opt/jumpserver/data/media \

-p 80:80 \

-p 2222:2222 \

-e SECRET_KEY=BqFQuEAF1ejzg9xCGlYRJQzvkP23DyKTqm9kyrMqGCAD1bxXWE \

-e BOOTSTRAP_TOKEN=YEYc4coKFmSDQpsf \

-e DB_HOST=192.168.8.201 \

-e DB_PORT=3306 \

-e DB_USER=jumpserver \

-e DB_PASSWORD="love-520" \

-e DB_NAME=jumpserver \

-e REDIS_HOST=192.168.8.201 \

-e REDIS_PORT=6379 \

-e REDIS_PASSWORD="love-520" \

jumpserver/jms_all

注意:保存好 SECRET_KEY  BOOTSTRAP_TOKEN,用于版本升级。

随机字符串生成方法:

# SECRET_KEY

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

# BOOTSTRAP_TOKEN

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

4、看容器状态

sudo docker ps

查看 JumpServer 动日志

docker logs -f jumpserver

看到如下日志,说明启成功,尝试浏览行访问

三、验证

3.1 可用性

是否可正常访问:http://192.168.1.146/

默认/:admin/admin

系统 JumpServer 录资产时使用的号,如 root ssh root@host,而不是使用名登录资产(ssh admin@host);

特权 资产已存在的, 并且有高级权限的系 JumpServer 使用推送系统用户获取资产硬件信息 等;

普通用户 可以在资产先存在,也可以由特来自动创建。

3.2 远程性

 1、Linux

  • 通过 JumpServer 程服务器

1.创
2. 建系
3. 源授
4. 通性验证 

 若水印影响视觉,去掉端水印即可。端的水印可以通【系统设–>安全设置–>开启水印】把勾去掉即可。

  • Linux  JumpServer

ssh admin@192.168.1.146 -p2222

# admin为JumpServer的登用户

# 2222为JumpServer监听端口

# 密码为JumpServeradmin的登密码

# 若开不想通过浏览器登web界面操作,也可xshell先登跳板机服器,再通上述命令远程自己的主机。

# 1、再跳板机服建一个一登的普通用户

# 2、开过该普通用录跳板机

# 3、运JumpServer各开开通普通账户/密码

# 4、开再通跳板机ssh命令接自己的JumpServer账户看自己已被授的主机,并可行登录

# 如下所示,根据对应提示输入即可

 

 2、Windows

由于我的 windows 不支持程桌面,此不再演示,但根据以上的步是可以正常接的。注意是 rdp 协议3389端口 win 接。 

四、FAQ

4.1 MySQL 版本问题

注意:数据版本问题 5.7.7 不行

ERRORS:

acls.LoginACL: (fields.E180) MySQL does not support JSONFields.

acls.LoginAssetACL: (fields.E180) MySQL does not support JSONFields.

acls.LoginAssetACL: (fields.E180) MySQL does not support JSONFields.

acls.LoginAssetACL: (fields.E180) MySQL does not support JSONFields.

applications.Application: (fields.E180) MySQL does not support JSONFields.

notifications.SystemMsgSubscription: (fields.E180) MySQL does not support JSONFields.

notifications.UserMsgSubscription: (fields.E180) MySQL does not support JSONFields.

terminal.Task: (fields.E180) MySQL does not support JSONFields.

tickets.ApprovalRule: (fields.E180) MySQL does not support JSONFields.

tickets.Ticket: (fields.E180) MySQL does not support JSONFields.

tickets.Ticket: (fields.E180) MySQL does not support JSONFields.

2021-11-20 08:50:15 Perform migrate failed, exit

# 由于JumpServer使用了新的Django版本,因此数据的版本也有一定的要求

# Django最新版v3.1的主要更新之一便是完善了JSON数据存的支持,新增models.JSONFieldforms.JSONField,可在所有受支持的数据后端上使用

# 目前支持的数据以及对应版本主要有MariaDB 10.2.7+,MySQL 5.7.8+,Oracle,PostgreSQLSQLite 3.9.0+

# 但个Django查询方法可能与部分数据不兼容,例如containscontained_by就不支持OracleSQLite数据

4.2 Redis 版本问题

 Redis 版本的 >= 5.0,本次使用的是6.2.6版本。因为对新版本的 Redis,小版本可能会出 JumpServer 无法接的情况。Redis 用于数据存,提高求响,降低 HTTP 求次数。

总结

用部署其简单,注意一些服的版本即可(因可能不兼容),线上的 JumpServer 大家可以根据公司的实际情况行部署,比如购买版的 JumpServer这样会更加安全,于一些初型公司,可以考先使用开源的 JumpServer,条件允可以行二次开

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值