环境准备

操作系统: centos7.7
IP:192.168.229.215
关闭selinux和防火墙

CentOS 7

[root@localhost ~]# setenforce 0  #临时关闭,重启后失效;
[root@localhost ~]# systemctl stop firewalld  #临时关闭,重启后失效;
#修改字符集,否则可能报input/output error的问题,因为日志里打印了中文。
[root@localhost ~]# localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
[root@localhost ~]# export LC_ALL=zh_CN.UTF-8
[root@localhost ~]# echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf

CentOS 6

$ setenforce 0  #临时关闭,重启后失效;
$ service iptables stop  #临时关闭,重启后失效;
#修改字符集,否则可能报input/output error的问题,因为日志里打印了中文。
$ localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
$ export LC_ALL=zh_CN.UTF-8
$ echo 'LANG=zh_CN.UTF-8' > /etc/sysconfig/i18n

一、准备Python3和Python虚拟环境

1.安装依赖包

yum -y install wget sqlite-devel xz gcc gcc-c++ automake zlib-devel openssl-devel epel-release git

2.编译安装

[root@localhost ~]# wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
[root@localhost ~]# tar xvf Python-3.6.1.tar.xz
[root@localhost ~]# cd Python-3.6.1
[root@localhost Python-3.6.1]# ./configure && make && make install
#这里必须执行编译安装,否则在安装Python库依赖时会有麻烦...

3.建立Python虚拟环境
因为CentOS 6/7自带的是Python2,而Yum等工具依赖原来的Python,为了不扰乱原来的环境,使用Python虚拟环境。

[root@localhost Python-3.6.1]# cd /opt
[root@localhost opt]# python3 -m venv py3
[root@localhost opt]# source /opt/py3/bin/activate
#看到下面的提示符代表成功,以后运行Jumpserver都要先运行以上source命令,以下所有命令均在该虚拟环境中运行。
(py3) [root@localhost opt]#

4.自动载入Python虚拟环境配置
此项仅为懒癌晚期的人员使用,防止运行Jumpserver时忘记载入Python虚拟环境导致程序无法运行。使用autoenv。

[root@localhost ~]# cd /opt/
[root@localhost opt]# git clone git://github.com/kennethreitz/autoenv.git
正克隆到 'autoenv'...
remote: Enumerating objects: 688, done.
remote: Total 688 (delta 0), reused 0 (delta 0), pack-reused 688
接收对象中: 100% (688/688), 108.98 KiB | 12.00 KiB/s, done.
处理 delta 中: 100% (365/365), done.
[root@localhost opt]# echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc
[root@localhost opt]# source ~/.bashrc

二、安装jumpserver

1.下载或clone项目
项目提交较多,git clone时较大,可以选择去Github项目页面直接下载zip包。

[root@localhost ~]# cd /opt
[root@localhost opt]# ls
autoenv  jumpserver.zip  py3
[root@localhost opt]# unzip jumpserver.zip
[root@localhost opt]# cd jumpserver/
[root@localhost jumpserver]# echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env  #进入jumpserver目录时,将自动载入python虚拟环境。
#首次进入jumpserver文件夹会有提示,按y即可。
# Are you sure you want to allow this? (y/N) y

2.安装依赖RPM包

(py3) [root@localhost ~]# cd /opt/jumpserver/requirements/
(py3) [root@localhost requirements]# yum -y install $(cat rpm_requirements.txt)  #如果没有任何报错请继续

3.安装Python库依赖

(py3) [root@localhost requirements]# pip install -r requirements.txt -i https://pypi.python.org/simple
(py3) [root@localhost requirements]# pip install --upgrade pip

4.安装Redis、Jumpserver使用Redis做cache和celery broke

#centos7
(py3) [root@localhost requirements]# yum -y install redis
(py3) [root@localhost requirements]# systemctl enable redis
(py3) [root@localhost requirements]# systemctl start redis

#centos6
$ yum -y install redis
$ chkconfig redis on
$ service redis start

5.安装MySQL
使用MySQL作为数据库,如果不使用MySQL可以跳过相关MySQL安装和配置。

#centos7
(py3) [root@localhost requirements]# yum -y install mariadb mariadb-devel mariadb-server  #centos7下安装的是mariadb;
(py3) [root@localhost requirements]# systemctl enable mariadb
(py3) [root@localhost requirements]# systemctl start mariadb

#centos6需要手动安装mysql5.5或以上的版本,自带的mysql5.1不支持,或者直接在其他现有mysql服务器上创建jumpserver数据库连接。

6.创建数据库Jumpserver并授权

MariaDB [(none)]> create database jumpserver default charset 'utf8';
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'asd123';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

7.修改Jumpserver配置文件

(py3) [root@localhost requirements]# cd /opt/jumpserver
(py3) [root@localhost jumpserver]# cp config_example.yml config.yml
(py3) [root@localhost jumpserver]# vim config.yml
#注意对齐,不要直接复制本文档的内容,实际内容以文件为准,本文仅供参考

注意:配置文件是Python格式,不要用TAB,而要用空格。

#cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49;echo  #生成随机密码
SECRET_KEY: UsUJcscIHjdLtRn319Bz3psefLqUBW0OmkS5OFlVUnY9ETZn6
BOOTSTRAP_TOKEN: LmEv3ET1SYZqgfJpaNnx5wak
DEBUG: false
LOG_LEVEL: ERROR
SESSION_EXPIRE_AT_BROWSER_CLOSE: true
DB_PASSWORD: dzpznxlW3nKxdERq
WINDOWS_SKIP_ALL_MANUAL_PASSWORD: True

8.生成数据库表结构和初始化数据

(py3) [root@localhost jumpserver]# cd /opt/jumpserver/utils
(py3) [root@localhost utils]# bash make_migrations.sh

9.运行Jumpserver

(py3) [root@localhost utils]# cd /opt/jumpserver
(py3) [root@localhost jumpserver]# ./jms start all  #后台运行使用-d参数./jms start all -d
#新版本更新了运行脚本,使用方式./jms start|stop|status|restart all后台运行请添加-d参数。

运行不报错,浏览器访问

http://192.168.229.215:8080/ 

在这里插入图片描述
默认账号:admin
密码:admin
页面显示不正常先不用处理,继续往下操作,后面搭建nginx代理后即可正常访问,原因是django无法在非debug模式下加载静态资源。

三、安装SSH Server和WebSocket Server: Coco

1.下载或Clone项目
新开一个终端,别忘了source /opt/py3/bin/activate

$ cd /opt
$ source /opt/py3/bin/activate
$ git clone https://github.com/jumpserver/coco.git
cd coco
git checkout master
$ echo "source /opt/py3/bin/activate" > /opt/coco/.env  #进入coco目录时将自动载入python虚拟环境
#首次进入coco文件夹会有提示,按y即可
# Are you sure you want to allow this? (y/N) y

2.安装依赖

$ cd /opt/coco/requirements
$ yum -y install $(cat rpm_requirements.txt)
$ pip install -r requirements.txt -i https://pypi.python.org/simple

3.修改配置文件并运行

$ cd /opt/coco
$ cp conf_example.py conf.py # 如果 coco 与 jumpserver 分开部署,请手动修改 conf.py
$ vi conf.py
# 注意对齐,不要直接复制本文档的内容

注意:配置文件是Python格式,不要用TAB,而要用空格。

#!/usr/bin/env python3
# -*- coding: utf-8 -*- #
import os
BASE_DIR = os.path.dirname(__file__)
class Config:
"""
Coco config file, coco also load config from server update setting below
"""
# 项目名称, 会用来向 Jumpserver 注册, 识别而已, 不能重复
# NAME = "localhost"
NAME = "coco"
# Jumpserver 项目的 url, api 请求注册会使用, 如果 Jumpserver 没有运行在 127.0.0.1:8080,
请修改此处
# CORE_HOST = os.environ.get("CORE_HOST") or 'http://127.0.0.1:8080'
CORE_HOST = 'http://127.0.0.1:8080'
# 启动时绑定的 ip, 默认 0.0.0.0
# BIND_HOST = '0.0.0.0'
# 监听的 SSH 端口号, 默认 2222
# SSHD_PORT = 2222
# 监听的 HTTP/WS 端口号,默认 5000
# HTTPD_PORT = 5000
# 项目使用的 ACCESS KEY, 默认会注册,并保存到 ACCESS_KEY_STORE 中,
# 如果有需求, 可以写到配置文件中, 格式 access_key_id:access_key_secret
# ACCESS_KEY = None
# ACCESS KEY 保存的地址, 默认注册后会保存到该文件中
# ACCESS_KEY_STORE = os.path.join(BASE_DIR, 'keys', '.access_key')
# 加密密钥
# SECRET_KEY = None
# 设置日志级别 ['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL', 'CRITICAL']
# LOG_LEVEL = 'INFO'
LOG_LEVEL = 'WARN'
# 日志存放的目录
# LOG_DIR = os.path.join(BASE_DIR, 'logs')
# Session 录像存放目录
# SESSION_DIR = os.path.join(BASE_DIR, 'sessions')
# 资产显示排序方式, ['ip', 'hostname']
# ASSET_LIST_SORT_BY = 'ip'
# 登录是否支持密码认证
# PASSWORD_AUTH = True
# 登录是否支持秘钥认证
# PUBLIC_KEY_AUTH = True
# SSH 白名单
# ALLOW_SSH_USER = 'all' # ['test', 'test2']
# SSH 黑名单, 如果用户同时在白名单和黑名单,黑名单优先生效
# BLOCK_SSH_USER = []
# 和 Jumpserver 保持心跳时间间隔
# HEARTBEAT_INTERVAL = 5
# Admin 的名字,出问题会提示给用户
# ADMINS = ''
COMMAND_STORAGE = {
"TYPE": "server" }
REPLAY_STORAGE = {
"TYPE": "server" }
# SSH 连接超时时间 (default 15 seconds)
# SSH_TIMEOUT = 15
# 语言 = en
LANGUAGE_CODE = 'zh'
config = Config()
$ ./cocod start # 后台运行使用 -d 参数./cocod start -d
# 新版本更新了运行脚本,使用方式./cocod start|stop|status|restart 后台运行请添加 -d 参数

启动成功后去Jumpserver会话管理-终端管理(http://192.168.244.144:8080/terminal/terminal/)接受coco的注册。

四、安装Web Terminal前端:Luna

Luna已改为纯前端,需要Nginx来运行访问。
访问(https://github.com/jumpserver/luna/releases)下载对应版本的release包,直接解压,不需要编译。
1.解压Luna

$ cd /opt
$ wget https://github.com/jumpserver/luna/releases/download/1.4.1/luna.tar.gz
$ tar xvf luna.tar.gz
$ chown -R root:root luna
五、安装Windows支持组件

如果不需要管理windows资产,可以直接跳过这一步。
因为手动安装guacamole组件比较复杂,这里提供打包好的docker使用,启动guacamole。
1.Docker安装
仅针对CentOS7,CentOS6安装Docker相对比较复杂。

$ yum remove docker-latest-logrotate docker-logrotate docker-selinux dockdocker-engine
$ yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加 docker 官方源
$ yum-config-manager --add-repo 
https://download.docker.com/linux/centos/docker-ce.repo
$ yum makecache fast
$ yum install docker-ce
# 国内部分用户可能无法连接 docker 官网提供的源,这里提供阿里云的镜像节点供测试使用
$ yum-config-manager --add-repo 
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ rpm --import http://mirrors.aliyun.com/docker-ce/linux/centos/gpg
$ yum makecache fast
$ yum -y install docker-ce
$ systemctl start docker
$ systemctl status docker

2.启动Guacamole
这里所需要注意的是guacamole暴露出来的端口是8081,若与主机上其他端口冲突请自定义。

# 注意:这里需要修改下 http://<填写 jumpserver 的 url 地址> 例: http://192.168.244.144, 否
则会出错, 带宽有限, 下载时间可能有点长,可以喝杯咖啡,撩撩对面的妹子
# 不能使用 127.0.0.1 ,可以更换 registry.jumpserver.org/public/guacamole:latest
$ 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://<填写 jumpserver 的 url 地址> \
jumpserver/guacamole:latest

启动成功后去 Jumpserver 会话管理-终端管理(http://192.168.244.144:8080/terminal/terminal/)接受[Gua]开头的一个注册

六、配置Nginx整合各组件

1.安装Nginx根据喜好选择安装方式和版本

$ yum -y install nginx

2.准备配置文件修改/etc/nginx/nginx.conf

$ vim /etc/nginx/nginx.conf
# CentOS 6 需要修改文件 /etc/nginx/cond.f/default.conf
... 省略
# 把默认 server 配置块改成这样,原有的内容请保持不动
server {
listen 80; # 代理端口,以后将通过此端口进行访问,不再通过 8080 端口
client_max_body_size 100m; # 录像上传大小限制
location /luna/ {
try_files $uri / /index.html;
alias /opt/luna/; # luna 路径,如果修改安装目录,此处需要修改
}
location /media/ {
add_header Content-Encoding gzip;
root /opt/jumpserver/data/; # 录像位置,如果修改安装目录,此处需要修改
}
location /static/ {
root /opt/jumpserver/data/; # 静态资源,如果修改安装目录,此处需要修改
}
location /socket.io/ {
proxy_pass http://localhost:5000/socket.io/; # 如果coco安装在别的服务器,
请填写它的 ip
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location /guacamole/ {
proxy_pass http://localhost:8081/; # 如果 guacamole 安装在别的服务器,请填
写它的 ip
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location / {
proxy_pass http://localhost:8080; # 如果 jumpserver 安装在别的服务器,请填写它的
ip
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} }
... 省略

3.运行Nginx
nginx -t # 确保配置没有问题, 有问题请先解决。

# CentOS 7
$ systemctl start nginx
$ systemctl enable nginx
# CentOS 6
$ service nginx start
$ chkconfig nginx on

4.开始使用Jumpserver
检查应用是否已经正常运行

$ cd /opt/jumpserver
$ ./jms status # 确定 jumpserver 已经运行,如果没有运行请重新启动 jumpserver
$ cd /opt/coco
$ ./cocod status # 确定 jumpserver 已经运行,如果没有运行请重新启动 coco
# 如果安装了 Guacamole
$ docker ps # 检查容器是否已经正常运行,如果没有运行请重新启动 Guacamole

服务全部启动后,访问 http://192.168.244.144,访问nginx代理的端口,不要再通过8080端口访问
默认账号: admin 密码: admin
如果部署过程中没有接受应用的注册,需要到 Jumpserver 会话管理-终端管理接受Coco、Guacamole等应用的注册。
5.测试连接
如果登录客户端是 macOS 或 Linux ,登录语法如下

$ ssh -p2222 admin@192.168.244.144
$ sftp -P2222 admin@192.168.244.144
密码: admin
如果登录客户端是 Windows ,Xshell Terminal 登录语法如下
$ ssh admin@192.168.244.144 2222
$ sftp admin@192.168.244.144 2222
密码: admin
如果能登陆代表部署成功
# sftp 默认上传的位置在资产的 /tmp 目录下
# windows 拖拽上传的位置在资产的 Guacamole RDP 上的 G 目录下
七、其他补充

1.安装部署koko组件

(py3) [root@jumpserver jumpserver]# cd /opt
(py3) [root@jumpserver opt]# tar zxf koko-v2.1.1-linux-amd64.tar.gz
(py3) [root@jumpserver opt]# mv koko-v2.1.1-linux-amd64 koko
(py3) [root@jumpserver opt]# chown -R root:root koko
(py3) [root@jumpserver opt]# cd koko/
(py3) [root@jumpserver koko]# cp config_example.yml config.yml
(py3) [root@jumpserver koko]# vim config.yml
CORE_HOST: http://127.0.0.1:8080
BOOTSTRAP_TOKEN: LmEv3ET1SYZqgfJpaNnx5wak
LOG_LEVEL: ERROR
SHARE_ROOM_TYPE: redis
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379
REDIS_DB_ROOM: 6
(py3) [root@jumpserver koko]# ./koko -d

2.下载lina、luna组件

(py3) [root@jumpserver koko]# cd /opt
(py3) [root@jumpserver opt]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
(py3) [root@jumpserver opt]# yum -y install nginx
(py3) [root@jumpserver opt]# systemctl start nginx
(py3) [root@jumpserver opt]# systemctl enable nginx
(py3) [root@jumpserver opt]# tar zxf lina-v2.1.1.tar.gz
(py3) [root@jumpserver opt]# tar zxf luna-v2.1.1.tar.gz
(py3) [root@jumpserver opt]# mv lina-v2.1.1 lina
(py3) [root@jumpserver opt]# mv luna-v2.1.1 luna
(py3) [root@jumpserver opt]# chown -R nginx:nginx lina
(py3) [root@jumpserver opt]# chown -R nginx:nginx luna

3.配置nginx整合各组件

(py3) [root@jumpserver opt]# mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
(py3) [root@jumpserver opt]# vim /etc/nginx/conf.d/jumpserver.conf
server {
    listen 80;

    client_max_body_size 100m;  # 录像及文件上传大小限制

    location /ui/ {
        try_files $uri / /index.html;
        alias /opt/lina/;
    }

    location /luna/ {
        try_files $uri / /index.html;
        alias /opt/luna/;  # luna 路径, 如果修改安装目录, 此处需要修改
    }

    location /media/ {
        add_header Content-Encoding gzip;
        root /opt/jumpserver/data/;  # 录像位置, 如果修改安装目录, 此处需要修改
    }

    location /static/ {
        root /opt/jumpserver/data/;  # 静态资源, 如果修改安装目录, 此处需要修改
    }

    location /koko/ {
        proxy_pass       http://localhost:5000;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        access_log off;
    }

    location /guacamole/ {
        proxy_pass       http://localhost:8081/;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        access_log off;
    }

    location /ws/ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8070;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /api/ {
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /core/ {
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location / {
        rewrite ^/(.*)$ /ui/$1 last;
    }
}
(py3) [root@jumpserver opt]# nginx -t
(py3) [root@jumpserver opt]# nginx -s reload

4.网页访问开始使用jumpserver
服务全部启动后,访问JumpServer服务器nginx代理的80端口,不要通过8080端口访问.
默认账号:admin
密码:admin
在这里插入图片描述
在这里插入图片描述

八、jumpserver的使用指南

1.创建用户

用户管理--用户列表--创建--输入名称、用户名、邮件、设置密码--选择角色--提交

在这里插入图片描述
在这里插入图片描述
2.创建管理用户

资产管理--管理用户--创建--输入名称、已有用户名、密码--提交

在这里插入图片描述
3.创建系统用户

资产管理--系统用户--创建--输入名称、用户名--提交

在这里插入图片描述
4.创建标签

资产管理--标签管理--创建--输入名称、值--提交

在这里插入图片描述
5.创建资产

资产管理--资产列表--创建节点--选择节点点击创建--输入主机名、IP、管理用户、节点、标签--提交

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6.资产授权

权限管理--资产授权--选择资产点击创建--输入名称、用户、资产、节点、系统用户--提交

在这里插入图片描述
在这里插入图片描述
内网虚拟机登录测试

[root@jumpserver ~]# ssh snow@192.168.229.187 -p 2222
		张杰,  欢迎使用Jumpserver开源堡垒机系统

	1) 输入 部分IP、主机名、备注 进行搜索登录(如果唯一).
	2) 输入 / + IP,主机名 or 备注 进行搜索,如:/192.168.
	3) 输入 p 进行显示您有权限的主机.
	4) 输入 g 进行显示您有权限的节点.
	5) 输入 d 进行显示您有权限的数据库.
	6) 输入 r 进行刷新最新的机器和节点信息.
	7) 输入 h 进行显示帮助.
	8) 输入 q 进行退出.
Opt> 1
开始连接到 test1@192.168.229.156  0.1
Last login: Fri Aug 14 10:44:11 2020 from 192.168.229.187
[test1@mysql ~]$
Logo

更多推荐