jumpserver部署1.0版本
A. jumpserver概述
跳板机概述:
跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作;
跳板机缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作、违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人;
堡垒机概述:
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。堡垒机多了实时收集、监控网络环境、集中报警等功能。
Jumpserver概述:
Jumpserver是一款使用Python, Django开发的开源跳板机系统,为互联网企业提供了认证,授权,审计,自动化运维等功能。
官方网址: http://www.jumpserver.org
jumpserver堡垒机组件说明:
Jumpserver:现指 Jumpserver 管理后台,是核心组件(Core), 使用 Django Class Based View 风格开发,支持 Restful API。
Coco: 实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 开发。
Luna: 现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。
B.jumpserver运行环境
Jumpserver 环境要求:
- 硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低)
- 操作系统: Linux 发行版 x86_64
- Python = 3.6.x
- Mysql Server ≥ 5.6
- Mariadb Server ≥ 5.5.56
- Redis
主机名 | IP地址 | 说明 |
tiaobanji | 172.16.1.91 | jumpserver |
上传依赖的软件到到Linux系统上将文件移动带 /opt/ 下 :【 点击下载 】
# 本文离线下载,相关包在网盘里面
关闭 selinux 和防火墙
[root@tiaobanji /]# setenforce # 可以设置配置文件永久关闭
[root@tiaobanji /]# systemctl stop firewalld.service ; systemctl disable
修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文
[root@tiaobanji /]# localedef -c -f UTF- -i zh_CN zh_CN.UTF-
[root@tiaobanji /]# export LC_ALL=zh_CN.UTF-
[root@tiaobanji /]# echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf
#重新连接,语言环境改变
准备 Python3 和 Python 虚拟环境
1. 安装依赖包
#安装前,可以开启yum缓存功能,把软件包下载下来,方便后期使用。
[root@tiaobanji /]# vim /etc/yum.conf
改:keepcache=
为:keepcache=
[root@tiaobanji ~]# yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
2. 编译安装python3.6.1
[root@tiaobanji /]# cd /opt
[root@tiaobanji /opt]# mv jumpserver-package/* /opt/
[root@tiaobanji /opt]# tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
[root@tiaobanji /opt/Python-3.6.1]# ./configure && make -j 4 && make install
#编译安装 # 这里必须执行编译安装,否则在安装 Python 库依赖时会有麻烦...
#在线下载 wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
互动: python2.7和python3.5冲突了怎么办? 老程序需要使用2.7,新程序需要3.6?
3. 建立 Python 虚拟环境
因为 CentOS 6/7 自带的是 Python2,而 Yum 等工具依赖原来的 Python,为了不扰乱原来的环境我们来使用 Python 虚拟环境
[root@tiaobanji /]# cd /opt
[root@tiaobanji /]# python3 -m venv py3
[root@tiaobanji /]# source /opt/py3/bin/activate
(py3) [root@tiaobanji /opt]# #切换成功的,前面有一个py3 标识
看到下面的提示符代表成功,以后运行 Jumpserver 都要先运行以上 source 命令,以下所有命令均在该虚拟环境中运行
安装 Jumpserver 1.0.0
1. 下载或 Clone 项目
项目提交较多 git clone 时较大,你可以选择去 Github 项目页面直接下载zip包。
在线下载方法:git clone --depth=1 https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master
注:depth用于指定克隆深度,为1即表示只克隆最近一次commit
[root@tiaobanji /]# cd /opt/jumpserver/
2. 安装依赖 RPM 包
[root@tiaobanji /]# cd /opt/jumpserver/requirements
[root@tiaobanji /]# yum -y install $(cat rpm_requirements.txt)
3. 安装 Python 库依赖
[root@tiaobanji /]# cd /opt/jumpserver/requirements
[root@tiaobanji /]# source /opt/py3/bin/activate
(py3) [root@tiaobanji /opt]# pip -V
pip 9.0. from /opt/py3/lib/python3./site-packages (python 3.6)
方法1:离线安装:
(py3) [root@tiaobanji /opt]# cd /opt/python-package
(py3) [root@tiaobanji /opt/python-package]# pip install ./*
# python-gssapi-0.6.4.tar.gz 离线安装还是在线安装会有卡顿等待5分钟
方法二:在线安装
[root@tiaobanji ~]# cd /opt/jumpserver/requirements/
[root@tiaobanji /opt/jumpserver/requirements]# pip install -r requirements.txt
pip 是一个安装和管理 Python 包的工具,相当于yum命令
4. 安装 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke
[root@tiaobanji /]# yum -y install redis
[root@tiaobanji /]# systemctl enable redis ; systemctl start redis
5. 安装 MySQL
[root@tiaobanji /]# yum install mariadb mariadb-devel mariadb-server -y
[root@tiaobanji /]# systemctl enable mariadb ; systemctl start mariadb
6. 建数据库 Jumpserver 并授权
[root@tiaobanji /]# mysql
MariaDB [(none)]> create database jumpserver default charset 'utf8';
MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit; # delete from mysql.user where user='jumpserver' and host='jumpserver'; 删除表信息
7. 改 Jumpserver 配置文件
(py3) [root@tiaobanji /opt]# cd /opt/jumpserver
(py3) [root@tiaobanji /opt/jumpserver]# cp config_example.py config.py
(py3) [root@tiaobanji /opt/jumpserver]# vim config.py
修改 DevelopmentConfig 中的配置,因为默认 Jumpserver 使用该配置,它继承自 Config
注意: 配置文件是 Python 格式,不要用 TAB,而要用空格 class DevelopmentConfig(Config):
# MySQL or postgres setting like:
DB_ENGINE = 'mysql'
DB_HOST = '127.0.0.1'
DB_PORT =
DB_USER = 'jumpserver'
DB_PASSWORD = ''
DB_NAME = 'jumpserver'
8. 成数据库表结构和初始化数据
(py3) [root@tiaobanji /opt]# cd /opt/jumpserver/utils
(py3) [root@tiaobanji /opt/jumpserver/utils]# bash make_migrations.sh ##注,在执行这一条命令之前,必续保障之前的pip install ./* 命令已经执行完了,不然后导入不了Django等软件包。
9. 运行jumpserver
(py3) [root@tiaobanji /opt]# cd /opt/jumpserver
(py3) [root@tiaobanji /opt/jumpserver]# chmod +x jms
(py3) [root@tiaobanji /opt/jumpserver]# ./jms start all -d (py3) [root@tiaobanji /opt/jumpserver]# ./jms restart all -d #重启
# 后台运行使用 -d 参数
注: ./jms start all #前台运行
如果运行失败了,重新启动一下。
最后几行结果:
gunicorn is running:
celery is running:
beat is running:
启动服务的脚本,使用方式./jms start|stop|status|restart all 后台运行请添加 -d 参数
测试:
访问 http://172.16.1.91:8080/ 用户 : admin 密码: admin
这里需要使用8080端口来访问页面。后期搭建 nginx 代理,就可以直接使用80端口正常访问了附上重启的方法
C.安装 Coco组件
安装coco组件
1. 默认点击web终端,弹出:
Luna是单独部署的一个程序,你需要部署luna,coco,配置nginx做url分发, 如果你看到了这个页面,证明你访问的不是nginx监听的端口,祝你好运
所以接下来,我们安装luna和coco:
coco概述:coco实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 开发。
(py3) [root@tiaobanji /opt]# cd /opt/coco #离线安装
(py3) [root@tiaobanji /opt/coco]# source /opt/py3/bin/activate
在线下载代码:git clone https://github.com/jumpserver/coco.git && cd coco && git checkout master
2. 安装coco的依赖包,主要有rpm和python包
(py3) [root@tiaobanji /opt]# cd /opt/coco/requirements
(py3) [root@tiaobanji /opt/coco/requirements]# yum -y install $(cat rpm_requirements.txt)
(py3) [root@tiaobanji /opt/coco/requirements]# pip install -r requirements.txt
#前面已经离线安装过python的包,这里就很快安装成功了,或提示已经安装成功。 注:扩展: pip download -r requirements.txt #使用download可以下载python包到本地
3. 查看配置文件并运行
(py3) [root@tiaobanji /opt]# cd /opt/coco
(py3) [root@tiaobanji /opt/coco]# cp conf_example.py conf.py # 如果 coco 与 jumpserver 分开部署,请手动修改 conf.py
(py3) [root@tiaobanji /opt/coco]# chmod +x cocod
(py3) [root@tiaobanji /opt/coco]# ./cocod start -d
新版本更新了运行脚本,使用方式./cocod start|stop|status|restart 后台运行请添加 -d 参数
D.安装Web-Terminal前端-Luna组件-配置Nginx整合各组件
安装luna组件
Luna概述:Luna现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。
访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包,直接解压,不需要编译
解压 Luna:
(py3) [root@tiaobanji /]# cd /opt
(py3) [root@tiaobanji /opt]# tar xvf luna.tar.gz
(py3) [root@tiaobanji /opt]# ls /opt/luna
在线下载:wget https://github.com/jumpserver/luna/releases/download/v1.0.0/luna.tar.gz
配置 Nginx 整合各组件
vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=
enabled=
安装 Nginx 根据喜好选择安装方式和版本
(py3) [root@tiaobanji /]# yum -y install nginx
修改 /etc/nginx/conf.d/jumpserver.conf
(py3) [root@tiaobanji /]# vim /etc/nginx/nginx.conf
删除第38行到 57行中server {。。。}相关的内容,在vim命令模式,输入38gg,快速跳到38行,然后输入20dd,就可以删除。
删除后,在38行插入以一下内容:
server {
listen ; 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/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";
} location / {
proxy_pass http://localhost:8080; # 如果jumpserver安装在别的服务器,请填写它的ip
}
}
运行 Nginx
(py3) [root@tiaobanji /]# nginx -t # 检测配置文件
(py3) [root@tiaobanji /]# systemctl start nginx ; systemctl enable nginx
(py3) [root@tiaobanji /opt]# cd /opt/jumpserver 重启jumpserver
(py3) [root@tiaobanji /opt/jumpserver]# ./jms start all -d
接收coco注册
到会话管理-终端管理 接受 Coco的注册。点接受。
注册:
刷新:
测试连接:
(py3) [root@tiaobanji /]# ssh -p2222 admin@172.16.1.91 #密码: admin 端口port:2222
#不知为何我一直登不上,直接在网页上修改密码
重新连接测试:
(py3) [root@tiaobanji /]# ssh -p2222 admin@172.16.1.91 #密码: nihao123!
E.jumpserver平台系统初始化
系统基本设置
这里要写成自己真实的URL地址,不然后期用户访问不了。http://172.16.1.91
配置邮件发送服务器
点击页面上边的"邮件设置" TAB ,进入邮件设置页面:
SMTP服务器:smtp.163.com #目前qq的邮箱暂时不会设置以为ssl需要开启,不会!
注:自己邮箱要开启smtp和pop3服务。 官网:https://mail.163.com/ 注册账号
开启POP3/SMTP/IMAP服务方法:
请登录163邮箱,点击页面右上角的“设置”—在“高级”下,点“POP3/SMTP/IMAP”,勾选图中两个选项,点击确定。即可开启成功。开通后即可用闪电邮Outlook等软件收发邮件了。
服务器地址:POP3服务器:pop.163.com | SMTP服务器:smtp.163.com | IMAP服务器:imap.163.com
注:配置完后,需要重启一下服务。不然后期创建用户,收不到邮件。
(py3) [root@tiaobanji /]# /opt/jumpserver/jms stop all -d
(py3) [root@tiaobanji /]# /opt/jumpserver/jms start all -d
#一定要在虚拟环境捏启动
注意: 在使用jumpserver过程中,有一步是系统用户推送,要推送成功,client(后端服务器)要满足以下条件: 1. 后端服务器需要有python、sudo环境才能使用推送用户,批量命令等功能 2. 后端服务器如果开启了selinux,请安装libselinux-python。一般情况服务器上都关闭了selinux
jumpserver部署1.0版本的更多相关文章
- jumpserver部署0.3版本 =====( ̄▽ ̄*)b
jumpserver概述 跳板机概述: 跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作: 跳板机缺点:没有实现对运维人员操作行为的控制和 ...
- drbd.9.0版本部署
DRBD9.0部署 1) drbd软件安装 软件:drbd-9.0.0.tar.gz . drbd-utils-8.9.5.tar.gz(从8.4.5开始,drbd软件分成了两部分:核心模块和管理工具 ...
- 运维监控-基于yum的方式部署 Zabbix Agent 4.0 版本
运维监控-基于yum的方式部署 Zabbix Agent 4.0 版本 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 上一篇博客我们分享了如何基于yum的方式部署zabbix 4. ...
- 运维监控-基于yum的方式部署Zabbix Server 4.0 版本
运维监控-基于yum的方式部署Zabbix Server 4.0 版本 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.如何选择zabbix版本 1>.打开zabbix官方 ...
- 堡垒机环境-jumpserver部署
1:安装数据库 这里是提前安装,也可以不安装,在安装jumpserver主程序的时候,他会询问你是否安装 yum -y install ncurses-devel cmake echo 'export ...
- JumpServer部署与管理
一.JumpServer 堡垒机概述 JumpServer由Python/Django进行开发.使用GNU GPL v2.0开源协议.也是全球首款完全开源的堡垒机.同时配备了业界领先的Web Term ...
- jumpserver部署使用
一.简介 前面我们聊到了openvpn的部署和使用,它能够实现从互联网通过openvpn连接到公司内网服务器,从而进行远程管理:但openvpn有一个缺点它不能记录哪些用户在内网服务器上操作了什么,拥 ...
- Mirantis OpenStack 8.0 版本大概性分析
作为 OpenStack 领域标杆性企业之一的 Mirantis 在2016年3月初发布了最新的 MOS 8.0 版本.本文试着基于公开资料进行一些归纳分析. 1. 版本概况 1.1 概况 社区版本: ...
- RDIFramework.NET平台代码生成器V3.0版本全新发布-更新于20160518(提供下载)
最新版本请转到:RDIFramework.NET平台代码生成器V3.1版本全新发布-更新于2016-10-08(提供下载) RDIFramework.NET代码生成器V3.0版本修改了针对3.0版本的 ...
随机推荐
- web开发(二) Servlet中response、request乱码问题解决
在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6412475.html>,在此仅供学习参考之用. 一.re ...
- enumerable 可枚举 属性
一个对象的可枚举属性会在for...in中被访问到 (或是类似的迭代方法, Object.keys() 如果一个属性不是可枚举的,循环会忽略这个属性 var obj = { key: 'val' }; ...
- Promise.then链式调用
let a = new Promise((resolve,reject)=>{ resolve(1) }).then((r)=>{console.log(r)}).then(()=> ...
- iOS 开发】解决使用 CocoaPods 执行 pod install 时出现 - Use the `$(inherited)` flag ... 警告
公司项目在执行 pod install 的时候总是出现很多黄色的警告,因为是警告并不会影响项目的正常编译,一直没有在意,但是总是有很多警告看起来很不舒服,于是就花了点时间解决掉了,下面将解决方法记录下 ...
- MySQL之视图学习
MYSQL---视图 1.概述: 视图是从一个或者多个表中导出的,视图的行为与表非常类似,但视图是一个虚拟表.在视图中用户可以使用SELECT语句查询数据,以及使用INSERT.UPDATE和DE ...
- Java内部类介绍
在Java中,内部类包括:成员内部类(静态内部类.非静态内部类).匿名内部类.局部内部类(几乎不用). 1.成员内部类: 1.1非静态成员内部类 public class InnerClassTest ...
- Java中集合关键字的区别
1. ArrayList.Vector和Stack有什么区别? 1.ArrayList的方法和实现基本上和Vector一样,底层都是数组的实现(简:API基本一样) 2.Stack继承了Vec ...
- nodejs以对象做对象的key导致value一直被覆盖
问题描述 在开发中,实现技能状态的事件监听功能时,将状态对象作为key,存入事件管理器的监听列表,如下图: 实现后,运行程序,并没有报错,但是当某个事件发生时,只有一个状态被触发监听,而大多数状态 ...
- spring boot-11.全局捕获异常
1.在Spring boot 中如果发生错误,浏览器访问会默认跳转到Whitelabel Error Page 这个错误页面,如果是客户端访问的话返回JSON格式的错误数据,说明spring boot ...
- springboot笔记-thymeleaf
简介:Thymeleaf 是⾯向 Web 和独⽴环境的现代服务器端 Java 模板引擎,能够处理 HTML.XML.JavaScript.CSS 甚至纯文本.Thymeleaf 的作用域在 HTML ...