jumpserver的安装部署
jumpserver一、安装步骤环境准备操作系统: Linux 发行版 x86_64Python = 3.6.xMysql Server ≥ 5.6Mariadb Server ≥ 5.5.56Redis一、安装步骤1.安装python3.6版本[root@jumpserver ~]# yum -y install python36 python36-devel
jumpserver
环境准备
操作系统: 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 ~]$
更多推荐
所有评论(0)