环境要求

  • docker-ce
  • Python3+
  • mysql5.6+
  • Redis

1 Ubuntu 安装 docker-ce 环境

参考文档

https://docs.docker.com/engine/install/debian/
https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/

卸载旧版

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

安装依赖

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

信任 Docker 的 GPG 公钥(发行版不同,下面的内容也有所不同)

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

添加仓库(发行版不同,下面的内容也有所不同)

sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"

安装docker-ce

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

检查是否安装成功

root@song-VirtualBox:~# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:f2266cbfc127c960fd30e76b7c792dc23b588c0db76233517e1891a4e357d519
Status: Downloaded newer image for hello-world:latest Hello from Docker!
This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal. To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/ For more examples and ideas, visit:
https://docs.docker.com/get-started/ root@song-VirtualBox:~# hostnamectl set-hostname ubuntu20
root@song-VirtualBox:~#
root@ubuntu20:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 2 months ago 13.3kB
root@ubuntu20:~#

2 Python 安装

Ubuntu20 自带的 Python 版本即可满足,只需要做一个软连接即可

ln -s /usr/bin/python3 /usr/bin/python

3 mysql5.7 安装

root@ubuntu20:~# docker pull mysql:5.7
5.7: Pulling from library/mysql
f7ec5a41d630: Pull complete
9444bb562699: Pull complete
6a4207b96940: Pull complete
181cefd361ce: Pull complete
8a2090759d8a: Pull complete
15f235e0d7ee: Pull complete
d870539cd9db: Pull complete
cb7af63cbefa: Pull complete
151f1721bdbf: Pull complete
fcd19c3dd488: Pull complete
415af2aa5ddc: Pull complete
Digest: sha256:a655529fdfcbaf0ef28984d68a3e21778e061c886ff458b677391924f62fb457
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
root@ubuntu20:~# # 配置 mysql 服务端
root@ubuntu20:~# mkdir -pv /etc/mysql/mysql.conf.d
root@ubuntu20:~# cat /etc/mysql/mysql.conf.d/mysqld.cnf
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
character-set-server=utf8
root@ubuntu20:~# # 配置 mysql 客户端
root@ubuntu20:~# cat /etc/mysql/conf.d/mysql.cnf
[mysql]
default-character-set=utf8
root@ubuntu20:~# # 创建数据存放目录
root@ubuntu20:~# mkdir -pv /data/mysql
mkdir: created directory '/data/mysql'
root@ubuntu20:~# # 运行 mysql 镜像
docker run -it \
--name mysql_jump \
-p 14306:3306 \
-v /etc/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf \
-v /data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="song123" \
-d mysql:5.7 # 连接mysql
# 注意:需要指定 -h宿主机IP
root@ubuntu20:/data# mysql -uroot -psong123 -P14306 -h10.0.0.16 # 创建 jumpserver 数据库
mysql> create database jumpserver default charset 'utf8';
Query OK, 1 row affected (0.00 sec) # 授权
mysql> grant all privileges on jumpserver.* to 'jumpserver'@'%' identified by 'song123';
Query OK, 0 rows affected, 1 warning (0.01 sec) # 验证授权用户是否可以登录查看 jumpserver 数据库
root@ubuntu20:~# mysql -ujumpserver -psong123 -P14306 -h10.0.0.16
# 查看
mysql> show databases;

4. Redis 安装

# 下载最新版 redis 镜像
docker pull redis # 新建 redis 配置和数据目录
mkdir -pv /data/redis/{conf,data} # redis 配置
cat /data/redis/conf/redis.conf
protected-mode no
daemonize no
databases 16
dir ./
appendonly yes # 运行 redis 容器
docker run \
--privileged \
--name redis_jump \
-p 6379:6379 \
-v /data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /data/redis/data:/data \
-d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes # 在宿主机安装 reids,主要是使用其客户端工具 redis-cli
apt -y install redis # 验证是否可以登录 redis
root@ubuntu20:/data/redis/conf# redis-cli -h 10.0.0.16
10.0.0.16:6379> info # 查看 redis 信息 # Server redis_version:6.2.3
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:ff251c3aac5814bc
... 省略部分 ...

5 安装 jumpserver

# 下载 jumpserver 镜像
docker pull jumpserver/jms_all:latest # 生成随机加密秘钥和初始化 token
root@ubuntu20:~# if [ "$SECRET_KEY" = "" ];then SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`; \
echo "SECRET_KEY=$ECRET_KEY" >> ~/.bashrc; echo $SECRET_KEY; else echo $SECRET_KEY; fi
sii4P5BCRfho4kqRIoGMZsvnrkbbNcRMIOFWRl5aN6gGeCFmRQ # 秘钥 root@ubuntu20:~# 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
AiElOlVO8Ey9mCBg # TOKEN

运行 jumpserver

docker run --name pc_jump \
-v /opt/jumpserver:/opt/jumpserver/data/media \
-p 80:80 \
-p 2222:2222 \
-e SECRET_KEY=sii4P5BCRfho4kqRIoGMZsvnrkbbNcRMIOFWRl5aN6gGeCFmRQ \
-e BOOTSTRAP_TOKEN=AiElOlVO8Ey9mCBg \
-e DB_HOST=10.0.0.16 \
-e DB_PORT=14306 \
-e DB_USER='jumpserver' \
-e DB_PASSWORD='song123' \
-e DB_NAME=jumpserver \
-e REDIS_HOST=10.0.0.16 \
-e REDIS_PORT=6379 \
-e REDIS_PASSWORD= \
jumpserver/jms_all:latest

6 详细图解

  1. JumpServer 原始的用户名和密码都是 admin,最新版的 JumpServer 为了安全考虑在初次登录时候会要求修改密码,请自行设置

  1. 为每个组创建一个使用 JumpServer 管理各自组名下机器的账号

  1. 创建一个可以登录真实机器的账户,此账户必须是真实存在的,同时必须拥有 root 权限

  1. 创建系统用户,此用户是一个登录(被管理端)机器的普通用户

  1. 添加(被管理端)机器

  1. 添加后测试 JumpServer 到(被管理端)机器是否能通

  1. 测试通过之后,就需要授权什么账号可以登录(被管理端)机器了

  1. 出于安全考虑,可以在(被管理端)的机器上禁止一些命令

  1. 将禁止的命令和系统用户做一个关联

  1. 使用给每个组创建的 JumpServer 账户登录

  2. 点击 “web终端” 登录机器进行管理

  1. 确认使用 web 账户登录成功

  1. 可以确认禁止的命令已无法使用

18张图带你入门最新版JumpServer的更多相关文章

  1. 熬夜肝出5大点,18张图带你彻底弄懂MySQL事务日志

    在当今社会,充斥着大量的数据.从众多APP上的账户资料到银行信用体系等个人档案,都离不开对大量数据的组织.存储和管理.而这,便是数据库存在的目的和价值.目前数据库的类型主要分为两种,一种是关系型数据库 ...

  2. 47 张图带你 MySQL 进阶!!!

    我们在 MySQL 入门篇主要介绍了基本的 SQL 命令.数据类型和函数,在局部以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我 ...

  3. 5000字 | 24张图带你彻底理解Java中的21种锁

    本篇主要内容如下: 本篇文章已收纳到我的Java在线文档. Github 我的SpringCloud实战项目持续更新中 帮你总结好的锁: 序号 锁名称 应用 1 乐观锁 CAS 2 悲观锁 synch ...

  4. 炸裂!MySQL 82 张图带你飞

    之前两篇文章带你了解了 MySQL 的基础语法和 MySQL 的进阶内容,那么这篇文章我们来了解一下 MySQL 中的高级内容. 其他文章: 138 张图带你 MySQL 入门 47 张图带你 MyS ...

  5. 35 张图带你 MySQL 调优

    这是 MySQL 基础系列的第四篇文章,之前的三篇文章见如下链接 138 张图带你 MySQL 入门 47 张图带你 MySQL 进阶!!! 炸裂!MySQL 82 张图带你飞 一般传统互联网公司很少 ...

  6. 8张图带你理解Java整个只是网络(转载)

    8张图带你理解Java整个只是网络 一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选.如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟. 1.字符 ...

  7. 8 张脑图入门 JavaScript - 基础面试不倒

    8 张脑图入门 JavaScript - 基础面试不倒 转载请注明出处 第一:JavaScript 的变量 第二:JavaScript 运算符 第三:JavaScript 数组 第四:JavaScri ...

  8. 138 张图带你 MySQL 入门

    SQL 基础使用 MySQL 是一种关系型数据库,说到关系,那么就离不开表与表之间的关系,而最能体现这种关系的其实就是我们接下来需要介绍的主角 SQL,SQL 的全称是 Structure Query ...

  9. 8张图带你了解iptables的前世今生

    1 安全技术和防火墙 1 安全技术和防火墙 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化.定位来自内 外网络的威胁情况,主要以提供报警和事后监 ...

随机推荐

  1. SpringBoot启动流程原理解析(二)

    在上一章我们分析了SpingBoot启动流程中实例化SpingApplication的过程. return new SpringApplication(primarySources).run(args ...

  2. C# 通过ServiceStack 操作Redis——Set类型的使用及示例

    ServiceStack 程序集里面没有方法注解,我在这里将注解添加上去,有不当之处,欢迎指正 Console.WriteLine("---Set类型---"); //添加 set ...

  3. css整理之-----------基本知识

    盒子模型 所有HTML元素可以看作盒子,它包括:边距,边框,填充,和实际内容. CSS中组成一个块级盒子需要: Content box: 这个区域是用来显示内容,大小可以通过设置 width 和 he ...

  4. Java 树结构实际应用 四(平衡二叉树/AVL树)

    平衡二叉树(AVL 树) 1 看一个案例(说明二叉排序树可能的问题) 给你一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST), 并分析问题所在.  左边 BST 存在的问题分析: ...

  5. c/c++ switch case内括号

    如果在case语句中有定义变量,则必须要加{},否则会报错.

  6. Ubuntu20.04linux内核(5.4.0版本)编译准备与实现过程-编译过程(2)

    前面因为博客园维修,所以内核编译过程一直没有发出来,现在把整个内核过程分享出来.本随笔给出内核的编译实现过程,在编译前需要参照我前面一篇随笔: Ubuntu20.04linux内核(5.4.0版本)编 ...

  7. java例题_43 求0—7所能组成的奇数个数

    1 /*43 [程序 43 求奇数个数] 2 题目:求 0-7 所能组成的奇数个数. 3 */ 4 5 /*分析 6 * 1.0不能作最高位且最低位只能是1,3,5,7; 7 * 2.没有限定是几位数 ...

  8. Spring Cloud 升级之路 - 2020.0.x - 1. 背景知识、需求描述与公共依赖

    1. 背景知识.需求描述与公共依赖 1.1. 背景知识 & 需求描述 Spring Cloud 官方文档说了,它是一个完整的微服务体系,用户可以通过使用 Spring Cloud 快速搭建一个 ...

  9. 【PHP】用了这么久的Laravel框架,你分析过核心架构了没

    Laravel最初的设计是为了面向MVC架构的,它可以满足如事件处理.用户身份验证等各种需求.另外它还有一个由管理数据库强力支持,用于管理模块化和可扩展性代码的软件包管理器. Laravel以其简洁. ...

  10. 北航OO第一单元作业总结(1.1~1.3)

    经过了三次作业之后,OO第一单元告一段落,作为一个蒟蒻,我初步了解了面向对象的编程思想,并将所学内容用于实践. 一.第一次作业 1.架构分析 本次作业需要完成的任务为简单多项式导函数的求解.表达式仅支 ...