一、部署CORE
1、修改maridb版本库
vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = 阿里云开源镜像站资源目录
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
清除Yum的缓存并重新建立
yum clean all
yum makecache
2、安装基础依赖库
yum -y install wget lrzsz xz gcc git epel-release python-pip python-devel mysql-devel automake autoconf sqlite-devel zlib-devel openssl-devel sshpass readline-devel
3、安装python
#因为python3.6指支持jumpserver 2.0.1版本以下的环境所以请手动到github官网下载安装
#上传包Python-3.6.1.tar.xz
tar xf Python-3.6.1.tar.xz
mv Python-3.6.1 /opt
cd /opt/Python-3.6.1
./configure
make && make install #编译并安装
建立 Python 虚拟环境
cd /opt
python3.6 -m venv py3
source /opt/py3/bin/activate (每次进入操作系统都需要执行此命令进入虚拟环境)
4、安装jumpserver
在Github上下载 jumpserver包并上传
下载地址在上方: jumpserver-2.0.1.zip
yum install unzip
unzip jumpserver-2.0.1.zip
mv jumpserver-2.0.1.zip /opt/jumpserver
安装依赖
cd /opt/jumpserver
chmod 777 * -R
cd /opt/jumpserver/requirements
yum -y install $(cat rpm_requirements.txt)
yum install mariadb-libs
yum install MariaDB-shared
安装Python依赖
pip install --upgrade pip setuptools
阿里云源下载(更快)
pip install -r requirements.txt -i Simple Index
5、安装 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke
yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum --enablerepo=remi install redis
查看redis版本:
redis-cli --version
启动redis:
systemctl start redis
设置开机自启
systemctl enable redis
Redis开启远程登录连接,redis默认只能localhost访问,所以需要开启远程登录。解决方法如下:
在redis的配置文件/etc/redis.conf中
将bind 127.0.0.1 改成了 bind 0.0.0.0
6、安装 MySQL
yum -y install mariadb mariadb-devel mariadb-server
systemctl start mariadb
设置开机自启
systemctl enable mariadb
创建数据库 Jumpserver 并授权
DB_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24`
mysql -uroot -e "create database jumpserver default charset 'utf8'; grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'jumpserver'; flush privileges;"
7、修改 Jumpserver 配置文件
cd /opt/jumpserver/
cp config_example.yml config.yml
SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`
echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc
BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`
echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc
sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g" /opt/jumpserver/config.yml
sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml
sed -i "s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml
sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml
sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: false/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml
sed -i "s/DB_PASSWORD: /DB_PASSWORD: jumpserver/g" /opt/jumpserver/config.yml
处理国际化
rm -f apps/locale/zh/LC_MESSAGES/django.mo
python apps/manage.py makemessages -a
python apps/manage.py compilemessages
处理IP库
./opt/jumpserver/requirements/lfs_requirements.sh
运行 Jumpserver
cd /opt/jumpserver
./jms start all -d
8、关闭防火墙
在系统外访问URL时可能无法访问到,需要关闭防火墙或者将8080添加到防火墙中
查看防火墙状态
firewall-cmd --state
停止firewall
systemctl stop firewalld.service
禁止firewall开机启动
systemctl disable firewalld.service
访问url查看jumpserver安装结果 http://IP:8080
二、Lina 安装
Lina 是 JumpServer 的前端 UI 项目,主要使用 Vue,Element UI 完成。
1、下载源代码
可以从 Github 网站上获取最新的 Release 副本。这些版本是最新代码的稳定快照,从项目网站下载 Source code.tar.gz 源代码,通过命令行中提取该存档:
mkdir /opt/lina-v2.15.4
wget -O /opt/lina-v2.15.4.tar.gz https://github.com/jumpserver/lina/archive/refs/tags/v2.15.4.tar.gz
tar -xf lina-v2.15.4.tar.gz -C /opt/lina-v2.15.4 --strip-components 1
cd lina-v2.15.4
2、安装 Node
从 Node 官方网站参考文档部署 Node.js,请根据 环境要求,通过命令行中判断是否安装完成:
wget https://npm.taobao.org/mirrors/node/v12.20.2/node-v12.20.2-linux-x64.tar.xz
tar -xf node-v12.20.2-linux-x64.tar.xz
mv node-v12.20.2-linux-x64 /usr/local/node
chown -R root:root /usr/local/node
vi /etc/profile
#最后一行加入PATH
export PATH=$PATH:/usr/local/node/bin
环境变量生效
source /etc/profile
npm config set sass_binary_site node-sass Mirror
npm config set registry https://registry.npm.taobao.org
npm install -g yarn
yarn config set registry https://registry.npm.taobao.org
3、安装依赖
npm install -g yarn
yarn install
4、拷贝配置文件
cp .env.development.example .env.development
5、修改配置文件(默认情况下不要修改)
vi .env.development
# 全局环境变量 请勿随意改动
ENV = 'development'
# base api
VUE_APP_BASE_API = ''
VUE_APP_PUBLIC_PATH = '/ui/'
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
# It only does one thing by converting all import() to require().
# This configuration can significantly increase the speed of hot updates,
# when you have a large number of pages.
# Detail: https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js
VUE_CLI_BABEL_TRANSPILE_MODULES = true
# External auth
VUE_APP_LOGIN_PATH = '/core/auth/login/'
VUE_APP_LOGOUT_PATH = '/core/auth/logout/'
# Dev server for core proxy
VUE_APP_CORE_HOST = 'http://localhost:8080' # 修改成 Core 的 url 地址
VUE_APP_CORE_WS = 'ws://localhost:8070'
VUE_APP_ENV = 'development'
6、运行 Lina
yarn serve
7、构建 Lina
构建完成后的 lina 包为 html 文件,可以直接移到到 nginx 服务器。
yarn build:prod
三、Luna安装
Luna 是 JumpServer 的前端 UI 项目,主要使用 Angular CLI 完成。
环境要求⚓︎
Name Luna Node
Version v2.15.4 10
1、下载源代码⚓︎
可以从 Github 网站上获取最新的 Release 副本。这些版本是最新代码的稳定快照,从项目网站下载 Source code.tar.gz 源代码,通过命令行中提取该存档:
mkdir /opt/luna-v2.15.4
wget -O /opt/luna-v2.15.4.tar.gz https://github.com/jumpserver/luna/archive/refs/tags/v2.15.4.tar.gz
tar -xf luna-v2.15.4.tar.gz -C /opt/luna-v2.15.4 --strip-components 1
cd luna-v2.15.4
2、安装 Node
从 Node 官方网站参考文档部署 Node.js,请根据 环境要求,通过命令行中判断是否安装完成:
node -v
3、安装依赖
npm install
npm install --dev
npm rebuild node-sass
npm install -g @angular/cli
4、修改配置文件
备份配置文件
cp proxy.conf.json proxy.conf.json.example
修改
vi proxy.conf.json
{
"/koko": {
"target": "http://localhost:5000", # KoKo 地址
"secure": false,
"ws": true
},
"/media/": {
"target": "http://localhost:8080", # Core 地址
"secure": false,
"changeOrigin": true
},
"/api/": {
"target": "http://localhost:8080", # Core 地址
"secure": false, # https ssl 需要开启
"changeOrigin": true
},
"/core": {
"target": "http://localhost:8080", # Core 地址
"secure": false,
"changeOrigin": true
},
"/static": {
"target": "http://localhost:8080", # Core 地址
"secure": false,
"changeOrigin": true
},
"/lion": {
"target": "http://localhost:9529", # Lion 地址
"secure": false,
"pathRewrite": {
"^/lion/monitor": "/monitor"
},
"ws": true,
"changeOrigin": true
},
"/omnidb": {
"target": "http://localhost:8082",
"secure": false,
"ws": true,
"changeOrigin": true
}
}
5、修改package.json文件
在scripts标签下增加:
"serve" : "node --max_old_space_size=2048 node_modules/.bin/vue-cli-service serve --open"
这是为了解决node内存泄露导致无法正常运行的问题
6、运行 Luna
ng serve
7、构建 Luna
可以加 -prod 来进行生产构建 ng build -prod
ng build
构建完成后, 生成在 build 目录下
build时出现错误:Module not found: Error: Can't resolve 'crypto' in '/opt/luna-v2.15.4/node_modules/crypto-js'时需要单独执行npm i crypto --save 来解决这个问题。安装完后重新执行 ng build --------错误未解决
四、KoKo看装
Koko 是 Go 版本的 coco,重构了 coco 的 SSH/SFTP 服务和 Web Terminal 服务。
环境要求⚓︎
Name KoKo Go
Version v2.15.4 1.15
1、下载源代码⚓︎
可以从 Github[koko] 网站上获取最新的 Release 副本。这些版本是最新代码的稳定快照,从项目网站下载 Source code.tar.gz 源代码,通过命令行中提取该存档:
OS Arch Name
Linux amd64 koko-v2.15.4-linux-amd64.tar.gz
macOS amd64 koko-v2.15.4-darwin-amd64.tar.gz
mkdir /opt/koko-v2.15.4
wget -O /opt/koko-v2.15.4.tar.gz https://github.com/jumpserver/koko/archive/refs/tags/v2.15.4.tar.gz
tar -xf koko-v2.15.4.tar.gz -C /opt/koko-v2.15.4 --strip-components 1
cd koko-v2.15.4
chmod 777 * -R
2、安装 Go
从 Go 官方网站参考文档部署 golang,请根据 环境要求,通过命令行中判断是否安装完成:
wget https://golang.google.cn/dl/go1.15.linux-amd64.tar.gz
tar -xf go1.15.linux-amd64.tar.gz -C /usr/local/
chown -R root:root /usr/local/go
3、设置环境变量
vi /etc/profile
#最后一行加入PATH
export PATH=$PATH:/usr/local/go/bin
环境变量生效
source /etc/profile
go version
4、编译
OS Arch Command
Linux amd64 make linux
macOS amd64 make darwin
go env -w GOPROXY=https://goproxy.cn
make
构建完成后, 生成在 build 目录下
5、修改配置文件
cp config_example.yml config.yml
vi config.yml
# 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
# NAME:
# Jumpserver项目的url, api请求注册会使用
CORE_HOST: http://127.0.0.1:8080 # Core 的地址
# Bootstrap Token, 预共享秘钥, 用来注册coco使用的service account和terminal
# 请和jumpserver 配置文件中保持一致,注册完成后可以删除
BOOTSTRAP_TOKEN: ******** # 和 Core config.yml 的值保持一致
# 启动时绑定的ip, 默认 0.0.0.0
BIND_HOST: 0.0.0.0
# 监听的SSH端口号, 默认2222
SSHD_PORT: 2222 # 使用 0.0.0.0:2222
# 监听的HTTP/WS端口号,默认5000
HTTPD_PORT: 5000 # 使用 0.0.0.0:5000
# 项目使用的ACCESS KEY, 默认会注册,并保存到 ACCESS_KEY_STORE中,
# 如果有需求, 可以写到配置文件中, 格式 access_key_id:access_key_secret
# ACCESS_KEY: null
# ACCESS KEY 保存的地址, 默认注册后会保存到该文件中
# ACCESS_KEY_FILE: data/keys/.access_key
# 设置日志级别 [DEBUG, INFO, WARN, ERROR, FATAL, CRITICAL]
LOG_LEVEL: DEBUG # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR
# SSH连接超时时间 (default 15 seconds)
# SSH_TIMEOUT: 15
# 语言 [en,zh]
# LANGUAGE_CODE: zh
# SFTP的根目录, 可选 /tmp, Home其他自定义目录
# SFTP_ROOT: /tmp
# SFTP是否显示隐藏文件
# SFTP_SHOW_HIDDEN_FILE: false
# 是否复用和用户后端资产已建立的连接(用户不会复用其他用户的连接)
# REUSE_CONNECTION: true
# 资产加载策略, 可根据资产规模自行调整. 默认异步加载资产, 异步搜索分页; 如果为all, 则资产全部加载, 本地搜索分页.
# ASSET_LOAD_POLICY:
# zip压缩的最大额度 (单位: M)
# ZIP_MAX_SIZE: 1024M
# zip压缩存放的临时目录 /tmp
# ZIP_TMP_PATH: /tmp
# 向 SSH Client 连接发送心跳的时间间隔 (单位: 秒),默认为30, 0则表示不发送
# CLIENT_ALIVE_INTERVAL: 30
# 向资产发送心跳包的重试次数,默认为3
# RETRY_ALIVE_COUNT_MAX: 3
# 会话共享使用的类型 [local, redis], 默认local
# SHARE_ROOM_TYPE: local
# Redis配置
# REDIS_HOST: 127.0.0.1 # 如果需要部署多个 koko, 需要通过 redis 来保持会话
# REDIS_PORT: 6379
# REDIS_PASSWORD:
# REDIS_CLUSTERS:
# REDIS_DB_ROOM:
6、启动koko监听程度
在build目录下生成的即是各操作系统的SSH/SFTP 服务和 Web Terminal 服务,需要到build目录下解压需要的客户端,修改对应的config.yml文件后
执行./koko 即可启动监听程序
例如:启动linux X86架构的koko
cd build/
tar xzvf koko---linux-amd64.tar.gz
cd koko---linux-amd64
chmod 777 * -R
cp /opt/koko-v2.15.4/config.yml /opt/koko-v2.15.4/build/koko---linux-amd64
touch config.yml
./koko
五、Lion 安装
Lion 使用了 Apache 软件基金会的开源项目 Guacamole,JumpServer 使用 Golang 和 Vue 重构了 Guacamole 实现 RDP/VNC 协议跳板机功能。
环境要求⚓︎
Name JumpServer Guacd Lion
Version v2.15.4 1.3.0 v2.15.4
1、下载源码包
可以从 Github 网站上获取对应的 guacd 副本。这些版本是最新代码的稳定快照,从项目网站下载 Source code.tar.gz 源代码,通过命令行中提取该存档:
mkdir /opt/guacamole-v2.15.4
cd /opt/guacamole-v2.15.4
wget http://download.jumpserver.org/public/guacamole-server-1.3.0.tar.gz
tar -xzf guacamole-server-1.3.0.tar.gz
cd guacamole-server-1.3.0/
2、安装依赖
参考 building-guacamole-server 官方文档,安装对应操作系统的依赖包。
yum -y localinstall --nogpgcheck https://mirrors.aliyun.com/rpmfusion/free/el/rpmfusion-free-release-7.noarch.rpm
yum install -y cairo-devel libjpeg-turbo-devel libpng-devel libtool uuid-devel
yum install -y ffmpeg-devel freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel libwebsockets-devel pulseaudio-libs-devel openssl-devel libvorbis-devel libwebp-devel
3、构建 Guacd
./configure --with-init-dir=/etc/init.d
make
make install
ldconfig
如果希望使用 systemd 管理, 可以使用 ./configure --with-systemd-dir=/etc/systemd/system/
4、下载 Lion
可以从 Github 网站上获取最新的 Release 副本。
OS Arch Name
Linux amd64 lion-v2.15.4-linux-amd64.tar.gz
Linux arm64 lion-v2.15.4-linux-arm64.tar.gz
macOS amd64 lion-v2.15.4-darwin-amd64.tar.gz
Windows amd64 lion-v2.15.4-windows-amd64.tar.gz
cd /opt
wget https://github.com/jumpserver/lion-release/releases/download/v2.15.4/lion-v2.15.4-linux-amd64.tar.gz
tar -xf lion-v2.15.4-linux-amd64.tar.gz
cd lion-v2.15.4-linux-amd64
5、修改配置文件
cp config_example.yml config.yml
vi config.yml
# 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
# NAME:
# Jumpserver项目的url, api请求注册会使用
CORE_HOST: http://127.0.0.1:8080 # Core 的地址
# Bootstrap Token, 预共享秘钥, 用来注册使用的service account和terminal
# 请和jumpserver 配置文件中保持一致,注册完成后可以删除
BOOTSTRAP_TOKEN: ******** # 和 Core config.yml 的值保持一致
# 启动时绑定的ip, 默认 0.0.0.0
BIND_HOST: 0.0.0.0
# 监听的HTTP/WS端口号,默认8081
HTTPD_PORT: 8081
# 设置日志级别 [DEBUG, INFO, WARN, ERROR, FATAL, CRITICAL]
LOG_LEVEL: DEBUG # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR
# Guacamole Server ip,默认127.0.0.1
# GUA_HOST: 127.0.0.1
# Guacamole Server 端口号,默认4822
# GUA_PORT: 4822
# 会话共享使用的类型 [local, redis], 默认local
# SHARE_ROOM_TYPE: local
# Redis配置
# REDIS_HOST: 127.0.0.1
# REDIS_PORT: 6379
# REDIS_PASSWORD:
# REDIS_DB_ROOM:
6、启动 Guacd⚓︎
/etc/init.d/guacd start
7、启动 Lion⚓︎
./lion
六、Nginx安装
从 Nginx 官方网站上获取 Nginx 的最新发行版本 linux_packages,通过命令行验证安装是否完成:
1、安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2、安装 PCRE(让 Nginx 支持 Rewrite 功能)
#下载最新版本的,注意不要用pcre2
wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz --no-check-certificate #因部署了openssl 需要增加 --no-check-certificate 参数跳过验证
tar -xvf pcre-8.45.tar.gz -C /opt/nginx/
cd nginx/pcre-8.45/
#安装编译
./configure
make && make install
#查看pcre版本
pcre-config --version
3、安装nginx
cd /opt/nginx
#下载
wget https://nginx.org/download/nginx-1.19.7.tar.gz
tar -xvf nginx-1.19.7.tar.gz
cd nginx-1.19.7
#编译安装
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/opt/nginx/pcre-8.45
make && make install
#查看版本
/usr/local/webserver/nginx/sbin/nginx -v
4、设置环境变量
vi /etc/profile
#最后一行加入PATH
export PATH=$PATH:/usr/local/webserver/nginx/sbin
环境变量生效
source /etc/profile
验证
nginx -v
5、启动nginx
cd /usr/local/webserver/nginx/sbin
./nginx
6、nginx命令
start nginx:打开 nginx
nginx -t :测试配置文件是否有语法错误
nginx -s reopen:重启Nginx
nginx -s reload:重新加载Nginx配置文件,然后以优雅的方式重启Nginx
nginx -s stop:强制停止Nginx服务
nginx -s quit:优雅地停止Nginx服务(即处理完所有请求后再停止服务)
七、整合 JumpServer
vi jumpserver.conf
server {
listen 80;
# server_name _;
#文件大小限制
client_max_body_size 5000m;
# Luna 配置
location /luna/ {
proxy_pass http://localhost:4200;
}
# Core data 静态资源
location /media/replay/ {
add_header Content-Encoding gzip;
root /opt/jumpserver/data/;
}
location /media/ {
root /opt/jumpserver/data/;
}
location /static/ {
root /opt/jumpserver/data/;
}
# KoKo Lion 配置
location /koko/ {
proxy_pass http://localhost:5000;
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_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# lion 配置
location /lion/ {
proxy_pass http://localhost:8081;
proxy_buffering off;
proxy_request_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_ignore_client_abort on;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 6000;
}
# Core 配置
location /ws/ {
proxy_pass http://localhost:8070;
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_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;
}
# 前端 Lina
location /ui/ {
proxy_pass http://localhost:9528;
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;
}
}