1.Jumpserver是什么
按照官网介绍,jumpserver是一款国产的开源的堡垒机软件,可以提供身份鉴别、访问控制、安全审计等功能。
2.安装
官方文档地址:
https://jumpserver.readthedocs.io/zh/master/index.html
准备依赖组件,jumpserver依赖的组件如下:
Centos = 7 红帽系的OS版本最好是7,后期需要安装docker
Python = 3.6.x
Mysql Server ≥ 5.6
推荐MySQL5.7版本
Redis 推荐5.0以上版本
Nginx
2.1依赖组件安装
安装Nginx,python3
修改yum源,建议修改为阿里或者其他商业yum源,阿里源地址
https://developer.aliyun.com/mirror/
yum install python36 python3-devel nginx git gcc jemalloc -y
设置开机自启动:
systemctl enable nginx.service
安装redis
直接官网下载最新的源码包:
http://download.redis.io/releases/redis-5.0.7.tar.gz
tar -xf redis-5.0.7.tar.gz
cd redis-5.0.7/
make
make install
启动redis服务:
nohup ./redis-5.0.7/src/redis-server &
可以查询进程或者端口号查看是否正常启动
ps -ef |grep redis
netstat -ntlp |grep redis
关于将redis做成系统服务,使之开机自启,稍后再讲。
注意:在编译安装的时候可能需要gcc和jemalloc,所以在上一步直接yum一起安装过了,编译出现问题及时百度。多数基础问题都会有答案。
2.2数据库安装设置
安装MySQL
推荐直接官网下载rpm软件包安装。或者使用其他地方的数据库,注意字符集问题。
安装的软件包为
mysql-community-client-5.7.24-1.el7.x86_64.rpm
mysql-community-common-5.7.24-1.el7.x86_64.rpm
mysql-community-devel-5.7.24-1.el7.x86_64.rpm
mysql-community-libs-5.7.24-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm
mysql-community-server-5.7.24-1.el7.x86_64.rpm
设置数据库字符集为utf8-mb4
vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
设置开机自启动&启动数据库
systemctl enable mysqld.service
systemctl start mysqld.service
查看初始密码
cat /var/log/mysqld.log |grep password
修改root初始密码 # 以下为进入数据库内部操作
alter user root@'localhost' identified by '新密码' ;
创建用户及数据库
mysql> create user jumpserver@'%' identified by '密码' ;mysql> create database jumpserver ;mysql> grant all on jumpserver.* to jumpserver@'%' ;
3.创建python环境
python3 -m venv /opt/py3
source /opt/py3/bin/activate
4.获取Jumpserver源代码
cd /optgit clone --depth=1 https://github.com/jumpserver/jumpserver.git
或者直接下载软件源码包,并解压
http://134.175.107.119/download/jumpserver/1.5.6/jumpserver.tar.gz
安装依赖软件包;非常重要!!!
cd /opt/jumpserver/requirementsyum install -y $(cat rpm_requirements.txt)
5.安装python包(非常重要)
由于pip安装需要从国外获取资源,耗时较长,可以替换为国内的源
在家目录下的.config/创建一个.config/pip/pip.conf文件# 注意config文件夹为隐藏文件夹,ll -a才可以查看到。
vim /root/.config/pip/pip.conf
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
安装python包,直接使用pip install 安装。
pip install --upgrade pip
pip install wheel
pip install -r requirements.txt
这一步非常容易出错,如果出现报错,一般都是前面依赖包没有装全。检查前面的依赖包。还有python3-devel包。
最后出现Successfully installed 。。。。一大串就表示安装成功啦~~~
6.修改配置文件并启动jumpserver
cd /opt/jumpserver
cp config_example.yml config.yml
cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50 # 记住这个输出值
cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 # 记住这个输出值
vim config.yml # 需要修改三个地方
SECRET_KEY: # 上面的50个随机字符串
BOOTSTRAP_TOKEN: # 上面的16个随机字符串
DB_PASSWORD: # 数据库的jumpserver用户密码
启动jumpserver
./ jms start
查看输出结果,出现如结果,无报错,则正常启动。./jms start -d 后台运行

7.部署koko和luna组件
wget https://github.com/jumpserver/koko/releases/download/1.5.6/koko-master-linux-amd64.tar.gz
wget https://github.com/jumpserver/luna/releases/download/1.5.6/luna.tar.gz
tar -xf koko-master-linux-amd64.tar.gz
tar -xf luna.tar.gz
chown -R root:root kokodir
chown -R root:root luna
cd kokodir
cp config_example.yml config.yml
vim config.yml
# BOOTSTRAP_TOKEN 需要从 jumpserver/config.yml 里面获取, 保证一致
./koko # 可以 -d 参数在后台运行 ./koko -d
8.安装docker
关闭selinux和firewall
yum-config-manager --add-repo=
https://download.docker.com/linux/centos/docker-ce.repo
yum install containerd.io
查看历史版本
yum list docker-ce --showduplicates | sort -r
yum install docker-ce-18.09.9-3.el7
设置开机启动&启动服务
systemctl enable docker.service
systemctl start docker.service
运行guacamole 组件
docker run --name jms_guacamole -d -p 127.0.0.1:8081:8080
-e JUMPSERVER_SERVER=http://主机ip:8080
-e BOOTSTRAP_TOKEN=和/opt/jumpserver/config.yml里面的一致
wojiushixiaobai/jms_guacamole:1.5.6
设置开机自启动,当意外退出时容器会尝试自己启动。
docker update --restart=on-failure jms_guacamole
最后:nginx设置
vim /etc/nginx/ngin.conf
listen 80 default_server;
listen [::]:80 default_server;
将后面的default_server删掉;
vim /etc/nginx/conf.d/jumpserver.conf
server {listen 80 default_server;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 /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 / {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;}}
重启nginx服务
systemctl restart nginx.service 或者nginx -s reload重读配置文件
测试:直接浏览器访问server的ip地址,默认账号密码均为admin;
可能问题:
登录认证后显示出现乱码,可能是mysql字符集问题,将字符集改为utf8mb4
在web终端无法连接所选服务器,可能是koko认证有问题,建议先./koko查看输出是否有报错,再重新认证。




