说明
jumpserver堡垒机组件说明:
1、Jumpserver:
现指 Jumpserver 管理后台,是核心组件(Core), 使用 Django Class Based View 风格开发,支持 Restful API。
2、Coco:
实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口,使用 Paramiko 和 Flask 开发。
3、Luna:
现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。
基础环境
master: jumpserver 服务
slave1: 要被管理的主机
参考文档:
https://docs.jumpserver.org/zh/master/install/setup_by_fast/
https://github.com/LIZEJU/jumpserver/tags (jumpserver的github地址)
centos阿里源镜像
http://mirrors.aliyun.com/centos/
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y clean all
yum -y makecache fast
yum -y install epel*
yum -y makecache fast
# 修改字符集,否则可能报 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/locale.conf
yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
获取 GPG 密钥失败:[Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GP
G-KEY-EPEL-7
[root@master ~]# scp -r /etc/pki/rpm-gpg/RPM-GPG-KEY-* slave1:/etc/pki/rpm-gpg/
root@slave1's password:
RPM-GPG-KEY-CentOS-7 100% 1690 13.8KB/s 00:00
RPM-GPG-KEY-CentOS-Debug-7 100% 1004 145.8KB/s 00:00
RPM-GPG-KEY-CentOS-Testing-7 100% 1690 390.2KB/s 00:00
RPM-GPG-KEY-EPEL-7 100% 1662 776.6KB/s 00:00
Jumpserver github下载
下载python3.6
https://www.python.org/downloads/source/
https://www.python.org/ftp/python/3.6.13/Python-3.6.13.tgz
tar xvf Python-3.6.13.tgz
cd Python-3.6.13
./configure && make -j 4 && make install
python3 -V
cd /opt/
创建虚拟环境
python3 -m venv py3
[root@master opt]# ls
py3
[root@master opt]# cd py3/
[root@master py3]# ls
bin include lib lib64 pyvenv.cfg
[root@master py3]# cd bin/
[root@master bin]# ls
activate activate.fish easy_install-3.6 pip3 python
activate.csh easy_install pip pip3.6 python3
[root@master bin]# python -V
Python 2.7.5
[root@master bin]# source activate
(py3) [root@master bin]# python -V
Python 3.6.13
安装jumpserver
https://github.com/LIZEJU/jumpserver/tags 下载jumpserver的压缩包
安装依赖rpm包
cd jumpserver/requirements
yum -y install $(cat rpm_requirements.txt)
安装python依赖库
cd jumpserver/requirements
source /opt/py3/bin/activate (激活创建的虚拟环境)
pip install -r requirements.txt
安装redis,jumpserver使用redis作为缓存和异步celery_broke
yum -y install redis
systemctl enable redis ; systemctl start redis
安装mariadb ,可以不用设置,jumpserver默认使用的sqllite作为数据库,在这里使用mysql
yum install mariadb mariadb-devel mariadb-server -y
systemctl enable mariadb ; systemctl start mariadb
创建数据库
mysql
MariaDB [(none)]> create database jumpserver default charset 'utf8';
MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '123456';
MariaDB [(none)]> exit;
修改jumpserver的配置文件
cd /opt/jumpserver
cp config_example.py config.py
vim config.py
# 我们计划修改 DevelopmentConfig 中的配置,因为默认 Jumpserver 使用该配置,它继承自 Config
注意: 配置文件是 Python 格式,不要用 TAB,而要用空格
class DevelopmentConfig(Config):
DEBUG = True
DB_ENGINE = 'mysql'
DB_HOST = '127.0.0.1'
DB_PORT = 3306
DB_USER = 'jumpserver'
DB_PASSWORD = '123456'
DB_NAME = 'jumpserver
生成数据库表结构和初始化数据
(py3) cd /opt/jumpserver/utils
(py3) bash make_migrations.sh #注,在执行这一条命令之前,必续保障之前的pip install ./* 命令已经执行完了,不然后导入不了Django等软件包。
9、行 Jumpserver
(py3) cd /opt/jumpserver
(py3) chmod +x jms
(py3) ./jms start all -d # 后台运行使用 -d 参数
注: ./jms start all #前台运行
如果运行失败了,重新启动一下。
#启动服务的脚本,使用方式./jms start|stop|status|restart all 后台运行请添加 -d 参数
可以访问链接:
http://192.168.10.100:8080
user/pwd == admin/admin
安装coco组件
coco概述:coco实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 开发。
(py3) cd /opt/coco #直接使用离线代码
(py3) source /opt/py3/bin/activate
附:在线下载代码:# git clone https://github.com/jumpserver/coco.git && cd coco && git checkout master
或者在github上搜索coco,并找他的发布版本下载
2、 安装coco的依赖包,主要有rpm和python包
(py3) cd /opt/coco/requirements
(py3) yum -y install $(cat rpm_requirements.txt)
(py3) pip install -r requirements.txt #前面已经离线安装过python的包,这里就很快安装成功了,或提示已经安装成功。
注:扩展: pip download -r requirements.txt #使用download可以下载python包到本地
3、查看配置文件并运行
(py3) cd /opt/coco
(py3)cp conf_example.py conf.py # 如果 coco 与 jumpserver 分开部署,请手动修改 conf.py
(py3) chmod +x cocod
(py3) ./cocod start -d #后台运行使用 -d 参数
# 新版本更新了运行脚本,使用方式./cocod start|stop|status|restart 后台运行请添加 -d 参数
安装terminal 前端 lua组件,以及配置nginx组合各组件
Luna概述:Luna现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。
访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包,直接解压,不需要编译
解压 Luna
(py3) cd /opt
(py3) tar xvf luna.tar.gz
(py3) ls /opt/luna
注:在线下载
#wget https://github.com/jumpserver/luna/releases/download/v1.0.0/luna.tar.gz
配置 Nginx 整合各组件
安装 Nginx 根据喜好选择安装方式和版本
(py3) yum -y install nginx
5.2 准备配置文件 修改 /etc/nginx/conf.d/jumpserver.conf
内容如下:
(py3) vim /etc/nginx/nginx.conf
删除第38行到 57行中server {。。。}相关的内容,在vim命令模式,输入38gg,快速跳到38行,然后输入20dd,就可以删除。
删除后,在38行插入以一下内容:
server {
listen 80;
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 /luna/ {
try_files $uri / /index.html;
alias /opt/jumpserver-package/luna/;
}
location /media/ {
add_header Content-Encoding gzip;
root /opt/jumpserver-package/jumpserver/data/;
}
location /static/ {
root /opt/jumpserver-package/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";
}
location / {
proxy_pass http://localhost:8080; # 如果jumpserver安装在别的服务器,请填写它的ip
}
}
运行nginx
nginx -t 检查配置文件
systemctl start nginx ; systemctl enable nginx
访问:
http://192.168.10.100:80/ == 192.168.10.100:8080
http://192.168.10.100:80/luna/ 访问到luna webternimal页面, 一个web终端窗口
http://192.168.10.100:80/socket.io/ == http://localhost:5000/socket.io/ coco websocket接口
更多内容参考官方手册:http://docs.jumpserver.org/zh/docs/step_by_step.html