jumpserver

说明


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,444评论 4 365
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,867评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,157评论 0 248
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,312评论 0 214
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,673评论 3 289
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,802评论 1 223
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,010评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,743评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,470评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,696评论 2 250
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,187评论 1 262
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,538评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,188评论 3 240
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,127评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,902评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,889评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,741评论 2 274

推荐阅读更多精彩内容