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

Jumpserver docker搭建

作者头像
py3study
发布2020-03-25 17:07:15
1.8K0
发布2020-03-25 17:07:15
举报
文章被收录于专栏:python3python3

一、概述

Jumpserver 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统。 Jumpserver 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好。 Jumpserver 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制。 Jumpserver 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。

二、安装

环境介绍

操作系统

配置

ip地址

主机名

安装软件

centos 7.6

2核4g

192.168.31.200

jumpserver

docker

centos 7.6

1核2g

192.168.31.150

svr-1

centos 7.6

1核2g

192.168.31.216

svr-2

mysql

使用docker方式安装

注意:密码不要设置123456这种简单的密码

代码语言:javascript
复制
mkdir -p /data/mysql/data
docker run -d --name mysql --restart=always -e MYSQL_ROOT_PASSWORD=abcd@1234  -p 3306:3306 -v /data/mysql/data:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

创建jumpserver数据库

注意:密码不要设置123456这种简单的密码,否则会导致jumpserver无法写入数据!提示无法连接mysql

代码语言:javascript
复制
# docker exec -it mysql /bin/bash
# mysql -u root -pabcd@1234
mysql> create database jumpserver default charset 'utf8mb4';
mysql> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'abcd@1234';
mysql> flush privileges;
mysql> exit;
# exit

redis

使用docker方式安装

代码语言:javascript
复制
mkdir -p /data/redis/data
docker run -d -it --name redis -p 6379:6379 -v /data/redis/data:/data --restart=always  --sysctl net.core.somaxconn=1024  redis:4.0.10 --requirepass "123456"

jumpserver

Jumpserver 封装了一个 All in one Docker, 可以快速启动。该镜像集成了所需要的组件, 支持使用外置 Database 和 Redis

生成随机加密密钥

代码语言:javascript
复制
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

启动jumpserver

这里使用最新版本1.5.6

代码语言:javascript
复制
mkdir -p /data/jumpserver
docker run -d --name jumpserver -h jumpserver --restart=always  \
    -v /data/jumpserver:/opt/jumpserver/data/media \
    -p 80:80 \
    -p 2222:2222 \
    -e SECRET_KEY=$SECRET_KEY \
    -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN \
    -e DB_HOST=192.168.31.200 \
    -e DB_PORT=3306 \
    -e DB_USER=jumpserver \
    -e DB_PASSWORD="abcd@1234" \
    -e DB_NAME=jumpserver \
    -e REDIS_HOST=192.168.31.200 \
    -e REDIS_PORT=6379 \
    -e REDIS_PASSWORD="123456" \
jumpserver/jms_all:1.5.6

参数解释:

-h 指定docker主机名

-e 指定环境变量,注意修改mysql和redis的ip地址和密码。

查看jumpserver启动日志

代码语言:javascript
复制
# docker logs -f jumpserver 
2020-01-09 20:02:18 Thu Jan  9 20:02:18 2020
2020-01-09 20:02:18 Jumpserver version 1.5.6, more see https://www.jumpserver.org
2020-01-09 20:02:18 Check database connection ...
users
 [ ] 0001_initial
...
Starting guacd: SUCCESS
Tomcat started.
Jumpserver ALL 1.5.6
官网 http://www.jumpserver.org
文档 http://docs.jumpserver.org
有问题请参考 http://docs.jumpserver.org/zh/docs/faq.html

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

访问网页

http://192.168.31.200/

用户名:admin

密码:admin

1.png
1.png

四、配置

更改密码

由于默认密码是admin,不安全。需要修改一下

1.png
1.png

 点击右侧更改密码即可。

1.png
1.png

基本设置

点击系统设置-->基本设置

更改当前url和主题前缀

1.png
1.png

 配置邮箱

1.png
1.png

用户管理

先来看一下jumpserver的用户

1.png
1.png

用户组

创建开发组

1.png
1.png

用户列表

默认只有一个administrator管理员账户,创建一个开发用户zhang

设置默认密码,开启MFA

1.png
1.png

 用户登录

使用普通用户登录

1.png
1.png

 再次输入密码

1.png
1.png

安装应用

1.png
1.png

使用手机扫描,输入6位校验码。

1.png
1.png

 注意:部分安卓手机,可能无法扫描。需要手动输入提供的秘钥,在上图红框中的秘钥。

 输入6位校验码之后,就会提示绑定成功

1.png
1.png

 重新登录,输入用户和密码,会提示MFA认证

1.png
1.png

 登录成功之后,效果如下:

1.png
1.png

资产管理

管理用户

管理用户是针对于主机资产的管理员账户,可以用来推送一般权限账户。

进入docker容器,创建用户assets,生成秘钥

代码语言:javascript
复制
# docker exec -it jumpserver /bin/bash
# useradd assets
# su assets
$ ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Created directory '/home/assets/.ssh'.
Your identification has been saved in /home/assets/.ssh/id_rsa.
Your public key has been saved in /home/assets/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:N03AqZFRSrdTfPs+nF9x+FaOtKqkW73w4ItCHXFryS0 assets@jumpserver
The key's randomart image is:
+---[RSA 2048]----+
|        o=+o.    |
|       .+o++. .  |
|        .*o+.. . |
|        o E+. .. |
|       .Soo.. ooo|
|      . .. o . ==|
|     .    = . +.*|
|      .  * + o =o|
|       .+.+o+   +|
+----[SHA256]-----+

退出容器,拷贝秘钥对

代码语言:javascript
复制
# cd /data/jumpserver/
# docker cp jumpserver:/home/assets/.ssh/id_rsa .
# docker cp jumpserver:/home/assets/.ssh/id_rsa.pub .

将id_rsa下载到桌面

创建管理用户assets,上传秘钥文件

1.png
1.png

系统用户

系统用户是 Jumpserver 跳转登录资产时使用的用户,可以理解为登录资产用户。在授权规则中,会用到此用户!

创建develop,专门为开发人员使用的。

1.png
1.png

 注意:上面有一个sudo,表示不允许执行命令的列表。注意绝对路径要填写正确,否则不会生效。

禁止开发人员,切换用户。比如root

一定要禁止,否则输入

代码语言:javascript
复制
sudo su -

就可以直接切换到root用户,非常不安全!

资产列表

1.png
1.png

 默认没有资产,default下面也没有节点,可以创建不同类型的节点,在节点组下创建节点。 也可以对网域进行管理,网域概念估计是之前版本的IDC、机房的概念。

创建资产

新建节点

1.png
1.png

 重命名为测试环境,点击创建资产

1.png
1.png

 输入基本信息,如果ssh端口不是22,请更改。

1.png
1.png

登录到主机svr-1,新建用户assets,生成秘钥

代码语言:javascript
复制
[root@svr-1 ~]# useradd assets
[root@svr-1 ~]# su assets
[assets@svr-1 root]$ ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Created directory '/home/assets/.ssh'.
Your identification has been saved in /home/assets/.ssh/id_rsa.
Your public key has been saved in /home/assets/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:SH/ap8XVKnqSYlfJLUpNsjUrdNyW4aY/fmOA/UgoF7k assets@svr-1
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|              .  |
|      .    ..o o |
|     . o  oo* *. |
|      . S..O*O. .|
|         =+EO=.. |
|        ..+=*o=  |
|        o ==.oo+.|
|       . ooo .oo.|
+----[SHA256]-----+
[assets@svr-1 root]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[assets@svr-1 root]$ chmod 600 ~/.ssh/authorized_keys
[assets@svr-1 ~]$ cd ~/.ssh/
[assets@svr-1 .ssh]$ vi authorized_keys

登录到jumpserver,查看docker容器中assets的公钥

代码语言:javascript
复制
# cd /data/jumpserver/
# cat id_rsa.pub

在上面的步骤 vi authorized_keys ,添加assets的公钥

代码语言:javascript
复制
...
# jumpserver assets
ssh-rsa AAAAB3NzaC1y...

登录svr-1主机,修改配置文件

代码语言:javascript
复制
vi /etc/sudoers

在root后面添加一行

代码语言:javascript
复制
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
assets   ALL=(ALL)    NOPASSWD:ALL

使用 :x! 强制保存

测试资产

1.png
1.png

 确保测试是ok的

1.png
1.png

如果没有在svr-1开启assets用户的sudo免密,会导致测试失败! 

权限管理

资产授权

点击创建权限规则

1.png
1.png

web终端

登录zhang用户,点击web终端

1.png
1.png

 点击svr-1

1.png
1.png

 出现报错

代码语言:javascript
复制
Connect asset svr-1 error: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password publickey], no supported methods remain

这是因为svr-1主机,还没有develop用户

点击资产管理-->系统用户,点击推送

1.png
1.png

 确保推送成功

1.png
1.png

重新刷新web终端页面,再次点击svr-1,就可以登录了。

输入命令 date,效果如下:

1.png
1.png

ssh终端

上面提到的是web终端方式,如果不喜欢的话,可以使用ssh客户端工具,比如xhsell。

这里推荐使用秘钥方式登录

确保windos10或者mac已经生成了ssh密钥对。

windows10路径为:C:\Users\用户名\.ssh

mac路径为:~/.ssh

将id_rsa.pub文件内容,写入到ssh公钥

1.png
1.png

 开启mfa

1.png
1.png

 使用xshell新建一个连接。

注意:ip地址是jumpserver的地址,不是svr-1的地址

端口是2222,不是22

1.png
1.png

 选择秘钥验证,用户名zhang,选择私钥文件

1.png
1.png

点击连接,会提示mfa认证。

1.png
1.png

 登录成功之后,效果如下:

1.png
1.png

 输入数字1

1.png
1.png

 因为只有一台资产,所以就直接登录了。如果有多台,会有一个列表选择的!

测试切换到root用户

1.png
1.png

提示输入密码,注意:我没有给develop设置密码。

那么我测试一下,给develop用户设置一个密码。

登录到svr-1,使用root登录,给develop设置密码

代码语言:javascript
复制
# passwd develop

再次使用zhang登录堡垒机

1.png
1.png

提示无法执行。

上面是为开发用户,设置了一套权限。如果是管理员呢?

新建用户组

manage

1.png
1.png

新建一个系统用户manage

1.png
1.png

创建授权规则

1.png
1.png

推送用户

1.png
1.png

 确保推送成功

1.png
1.png

使用admin登录jumpserver

点击会话管理-->web终端

点击svr-1,就会以manage用户登录了。

1.png
1.png

切换到root用户

1.png
1.png

由于没有给manage设置密码,我这里直接使用在svr-1设置sudo免密即可。

以root用户登录svr-1,修改配置文件

代码语言:javascript
复制
vi /etc/sudoers

增加一行manage

代码语言:javascript
复制
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
assets   ALL=(ALL)    NOPASSWD:ALL
manage   ALL=(ALL)    NOPASSWD:ALL

刷新web终端,再次切换用户

1.png
1.png

 这样,就可以了!

本文参考链接:

https://blog.csdn.net/imtech/article/details/89332410

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
  • 二、安装
    • 环境介绍
      • mysql
        • redis
          • jumpserver
            • 生成随机加密密钥
            • 启动jumpserver
            • 查看jumpserver启动日志
            • 访问网页
        • 四、配置
          • 更改密码
            • 基本设置
              • 用户管理
                • 用户组
                • 用户列表
              •  用户登录
                • 资产管理
                  • 管理用户
                • 系统用户
                  • 资产列表
                    • 创建资产
                  • 权限管理
                    • 资产授权
                  • web终端
                    • ssh终端
                    相关产品与服务
                    访问管理
                    访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档