参考文档
jumpServer:https://docs.jumpserver.org/zh/master/#
安装方法有三种:使用docker、使用安装工具、手动部署
建议:
对于学习:使用docker、安装工具比较方便,搭建速度快,难度简单
对于生产:
- 可以手动部署,将不同服务分散到不同服务器
- 使用docker也是不错的选择
踩坑:对于手动部署需要严格按照
官网文档
指定的软件版本,要不会出现各种意想不到的现象系统:CentOS 7 内存 >= 4GB
方法一、使用docker安装
curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.9.2/quick_start.sh | bash
方法二、使用安装工具
安装工具:
方法三、手动部署
本文在官网的基础上完善安装过程
参考:https://docs.jumpserver.org/zh/master/dev/build/
环境要求:python3.6、redis>=6.0、mysql>=5.7 如果使用MariaDB>=10.2
注意:jumpserver安装的根目录在/opt下
环境配置
关闭防御
$ setenforce 0
# 将 /etc/selinux/config 中第7行 enforcing替换为disabled
$ sed -i ‘7 s/enforcing/disabled/’ /etc/selinux/config
$ systemctl stop firewalld
$ systemctl disable firewalld
修改字符集
防止报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 epel-release
$ yum -y update
$ yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
Python环境
core安装、运行需要
$ yum install python3 python3-devel -y
# centos 7 自带的是 Python2,而 Yum 等工具依赖原来的 Python,为了不扰乱原来的环境我们使用 Python 虚拟环境
$ cd /opt
$ python3 -m venv py3
$ source /opt/py3/bin/activate
(py3) [root@localhost py3 # 出现此行文字表示成功,后续运行 Jumpserver 都要先运行以上 source 命令,在虚拟环境中运行
安装MySQL
core安装需要,详细安装参照:https://www.jianshu.com/p/65dd1a0e8d66 中linux安装
# 在数据库中创建jumpserver库,并授权连接
mysql> create database jumpserver;
mysql> grant all on jumpserver.* to root@'192.168.3.%' identified by "root";
mysql> grant all on jumpserver.* to jumpserver@'192.168.3.%' identified by "root";
mysql> flush privileges;
#### 安装Redis
> core安装需要,详细安装配置请参考:https://www.jianshu.com/p/5769b2eb7d74
``` sh
$ wget https://download.redis.io/releases/redis-6.2.3.tar.gz
$ tar xzf redis-6.2.3.tar.gz
$ cd redis-6.2.3
$ make
$ src/redis-server
安装Node
Lina、Luna安装需要
# 下载
[root@localhost opt]# wget https://nodejs.org/dist/latest-v10.x/node-v10.24.1-linux-x64.tar.gz
# 解压
[root@localhost opt]# tar -xzvf node-v10.24.1-linux-x64.tar.gz
[root@localhost opt]# mv node-v10.24.1-linux-x64 node10
# 修改环境变量
[root@localhost opt]# vim /etc/profile
export PATH=/opt/node10/bin:$PATH
[root@localhost opt]# source /etc/profile
# 验证
[root@localhost opt]# node -v
v10.24.1
[root@localhost opt]# npm -v
6.14.12
# 安装yarn
[root@localhost opt]# npm install -g yarn
# 验证yarn
[root@localhost opt]# yarn -v
1.22.10
安装GO
KoKo 安装需要
# 下载
[root@localhost ~]# wget https://golang.google.cn/dl/go1.16.4.linux-amd64.tar.gz
# 解压
[root@localhost ~]# tar -xzvf go1.16.4.linux-amd64.tar.gz
[root@localhost ~]# mv go /usr/local/go
[root@localhost ~]# cd /usr/local/go/
# 环境变量
[root@localhost go]# vim /etc/profile
export PATH=/usr/local/go/bin:$PATH
[root@localhost go]# source /etc/profile
[root@localhost go]# go version
go version go1.16.4 linux/amd64
安装ng
Luna 安装需要
[root@localhost go]# npm install -g @angular/cli@1.3.2
安装 java
如果管理服务器不包含windows可以不安装
从Oracle官网下载,软件压缩包
jdk-8u271-linux-x64.tar.gz
[root@localhost ~]# tar -xzvf jdk-8u271-linux-x64.tar.gz
[root@localhost ~]# mv jdk-8u271-linux-x64 /usr/local/jdk1.8
# 配置
[root@localhost ~]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=/usr/local/jdk1.8/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost ~]# source /etc/profile
# 验证
[root@localhost local]# java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
[root@localhost local]# javac
用法: javac <options> <source files>
其中, 可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
[root@localhost local]# java
用法: java [-options] class [args...] (执行类)
或 java [-options] -jar jarfile [args...] (执行 jar 文件)
安装Core
下载
可以直接下载指定的版本,或者拉取github
$ cd /opt
$ wget https://github.com/jumpserver/jumpserver/releases/download/v2.9.2/jumpserver-v2.9.2.tar.gz
$ tar -xzvf jumpserver-v2.9.2.tar.gz
$ mv jumpserver-v2.9.2/ jumpserver
$ cd jumpserver
$ git clone --depth=1 https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master
$ cd jumpserver
# 生成配置文件
$ cp config_example.yml config.yml
安装RPM依赖
$ cd jumpserver/requirements
$ yum -y install $(cat rpm_requirements.txt)
安装Python库依赖
$ source /opt/py3/bin/activate
$ pip install -r requirements.txt # 不要指定-i参数,因为镜像上可能没有最新的包
$ pip freeze(查看已经安装的所有软件)
修改配置
$ vim jumpserver/config.yml
SECRET_KEY: pQMrf1LLorFU23gFxewr2abDz1jyzuSZDXPmhJSs4OfHzUmSH
# 使用Mysql作为数据库
DB_ENGINE: mysql
# 本机IP地址
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_USER: jumpserver
DB_PASSWORD: root
DB_NAME: jumpserver
注意:如果密码是纯数字,要使用单引号,比如
'123456'
初始化数据
$ source /opt/py3/bin/activate
(py3) [root@localhost ~]# cd /opt/jumpserver/utils/
(py3) [root@localhost utils]# ./make_migrations.sh
启动 Core
(py3) [root@localhost utils]# cd /opt/jumpserver/
(py3) [root@localhost jumpserver]# ./jms start all
# 其他指令 ./jms start|stop|status|restart all
注意:此时访问 localhost:8080 出现的界面布局是乱的,不要担心,我们完成下列安装之后就好了
原因:因为core提供的是核心服务api,界面需要lina来支持
安装Lina
前端UI,为系统提供静态页面服务
下载
[root@localhost opt]# mkdir /opt/lina-v2.9.2
[root@localhost opt]# wget -O /opt/lina-v2.9.2.tar.gz https://github.com/jumpserver/lina/archive/refs/tags/v2.9.2.tar.gz
[root@localhost opt]# tar -xf lina-v2.9.2.tar.gz -C /opt/lina-v2.9.2 --strip-components 1
[root@localhost opt]# cd lina-v2.9.2
配置
没有特殊需求,此处不用修改
vi .env.development
安装
[root@localhost lina-v2.9.2]# yarn install
运行
[root@localhost lina-v2.9.2]# yarn serve
构建
构建完成后的 lina 包为 html 文件, 可以直接移到到 nginx 服务器
[root@localhost lina-v2.9.2]# yarn build
# 如果提示没有build指令,尝试下列指令进行打包
# 生产环境打包
[root@localhost lina-v2.9.2]# yarn build:prod
# 测试环境打包
[root@localhost lina-v2.9.2]# yarn build:stage
如果需要部署 lina ,将/opt/lina-v2.9.2/lina 拷贝到/opt/lina 并做如下配置nginx
server {
listen 80;
location /ui/ {
try_files $uri / /ui/index.html;
alias /opt/lina/;
}
location / {
rewrite ^/(.*)$ /ui/$1 last;
}
}
安装Luna
luna 是一个 web terminal,主要提供命令行服务
下载
[root@localhost opt]# mkdir /opt/luna-v2.9.2
[root@localhost opt]# wget -O /opt/luna-v2.9.2.tar.gz https://github.com/jumpserver/luna/archive/refs/tags/v2.9.2.tar.gz
[root@localhost opt]# tar -xf luna-v2.9.2.tar.gz -C /opt/luna-v2.9.2 --strip-components 1
[root@localhost opt]# cd luna-v2.9.2
安装
[root@localhost luna-v2.9.2]# npm i
[root@localhost luna-v2.9.2]# npm rebuild node-sass
配置
没有特殊需求,此处不用修改
[root@localhost luna-v2.9.2]# vi proxy.conf.json
{
"/api": {
"target": "http://127.0.0.1:8080", # Core 地址
"secure": false # https ssl 需要开启
},
"/koko": {
"target": "http://127.0.0.1:5000", # KoKo 地址
"secure": false,
"ws": true
},
"/media/": {
"target": "http://127.0.0.1:8080", # Core 地址
"secure": false
},
"/guacamole/": {
"target": "http://127.0.0.1:8081", # Guacamole 地址
"secure": false,
"ws": true,
"pathRewrite": {
"^/guacamole": ""
}
}
}
运行
ng serve
安装KoKo
Koko 是 Go 版本的 coco;重构了 coco 的 SSH/SFTP 服务和 Web Terminal 服务
主要提供文件服务
下载
[root@localhost opt]# mkdir /opt/koko-v2.9.2
[root@localhost opt]# wget -O /opt/koko-v2.9.2.tar.gz https://github.com/jumpserver/koko/archive/refs/tags/v2.9.2.tar.gz
[root@localhost opt]# tar -xf koko-v2.9.2.tar.gz -C /opt/koko-v2.9.2 --strip-components 1
[root@localhost opt]# cd koko-v2.9.2
编译
[root@localhost koko-v2.9.2]# make
编译错误:dial tcp 172.217.24.17:443: connect: connection refused 运行下面命令更换代理
go env -w GOPROXY=https://goproxy.cn
编译成功之后,在当前目录下有build文件夹下,生成编译好的文件
[root@localhost koko-v2.9.2]# cd build/
[root@localhost build]# ll
总用量 31104
-rw-r--r-- 1 root root 15798198 5月 18 03:56 koko---darwin-amd64.tar.gz
-rw-r--r-- 1 root root 16050040 5月 18 03:56 koko---linux-amd64.tar.gz
# 将koko---linux-amd64.tar.gz拷贝到/opt目录下解压
[root@localhost build]# cp koko---linux-amd64.tar.gz /opt
[root@localhost build]# cd /opt
[root@localhost opt]# tar -xzvf koko---linux-amd64.tar.gz
[root@localhost opt]# cd kokodir
配置
[root@localhost kokodir]# cp config_example.yml config.yml
[root@localhost kokodir]# vim config.yml
注意:BOOTSTRAP_TOKEN: 一定要和Core的配置文件中的值相同(/opt/jumpserver/config.yml)
如果安装core时候没有指定,可以指定后重启 core 。
# 项目名称, 会用来向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:
启动
[root@localhost kokodir]# ./koko -d
安装Guacamole
解决 windows 链接问题,如果管理的服务器不涉及windows可以不用安装
Guacamole 是 Apache 软件基金会的开源项目, JumpServer 通过调用 Guacamole 实现 RDP/VNC 协议跳板机功能.
系统环境
yum -y install cairo cairo-devel libjpeg-turbo libjpeg-turbo-devel libjpeg-devel libpng libpng-devel libtool uuid-devel
安装server
[root@localhost ~]# mkdir /opt/guacamole-v2.9.2
[root@localhost ~]# cd /opt/guacamole-v2.9.2
[root@localhost guacamole-v2.9.2]# wget http://download.jumpserver.org/public/guacamole-server-1.3.0.tar.gz
[root@localhost guacamole-v2.9.2]# tar -xzf guacamole-server-1.3.0.tar.gz
[root@localhost guacamole-v2.9.2]# cd guacamole-server-1.3.0/
构建 Guacd
[root@localhost guacamole-server-1.3.0]# ./configure --with-init-dir=/etc/init.d
[root@localhost guacamole-server-1.3.0]# make
[root@localhost guacamole-server-1.3.0]# make install
[root@localhost guacamole-server-1.3.0]# ldconfig
# 配置文件夹
[root@localhost ~]# mkdir -p /config/guacamole/lib /config/guacamole/extensions /config/guacamole/data/log/ /config/guacamole/data/record /config/guacamole/data/drive
[root@localhost ~]# cd /config
[root@localhost config]# echo "enable-clipboard-integration: true" > /config/guacamole/guacamole.properties
安装Tomcat
[root@localhost config]# TOMCAT_VER=`curl -s http://tomcat.apache.org/tomcat-9.0-doc/ | grep 'Version ' | awk '{print $2}' | sed 's/.$//'`
[root@localhost config]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v${TOMCAT_VER}/bin/apache-tomcat-${TOMCAT_VER}.tar.gz
[root@localhost config]# tar -xf apache-tomcat-${TOMCAT_VER}.tar.gz
[root@localhost config]# mv apache-tomcat-${TOMCAT_VER} tomcat9
[root@localhost config]# sed -i 's/Connector port="8080"/Connector port="8081"/g' /config/tomcat9/conf/server.xml
[root@localhost config]# echo "enable-clipboard-integration: true" > /config/guacamole/guacamole.properties
[root@localhost config]# rm -f apache-tomcat-${TOMCAT_VER}.tar.gz
[root@localhost config]# rm -rf /config/tomcat9/webapps/*
安装client
#下载
[root@localhost ~]# cd /opt/guacamole-v2.9.2
[root@localhost guacamole-v2.9.2]# wget http://download.jumpserver.org/release/v2.9.2/guacamole-client-v2.9.2.tar.gz
[root@localhost guacamole-v2.9.2]# tar -xf guacamole-client-v2.9.2.tar.gz]#
[root@localhost guacamole-v2.9.2]# cp guacamole-client-v2.9.2/guacamole-*.war /config/tomcat9/webapps/ROOT.war
[root@localhost guacamole-v2.9.2]# cp guacamole-client-v2.9.2/guacamole-*.jar /config/guacamole/extensions/
[root@localhost guacamole-v2.9.2]# wget https://download.jumpserver.org/public/ssh-forward-linux-amd64.tar.gz
[root@localhost guacamole-v2.9.2]# tar -xf ssh-forward-linux-amd64.tar.gz -C /bin/
[root@localhost guacamole-v2.9.2]# chown root:root /bin/ssh-forward
[root@localhost guacamole-v2.9.2]# chmod 755 /bin/ssh-forward
启动脚本
vi /opt/start_guacamole.sh
#!/bin/bash
##
# 更多参数说明参考 https://docs.jumpserver.org/zh/master/admin-guide/env/#guacamole
export JUMPSERVER_SERVER=http://127.0.0.1:8080 # Core 的地址
export BOOTSTRAP_TOKEN=******** # 和 Core config.yml 的值保持一致
export GUACAMOLE_HOME=/config/guacamole
export GUACAMOLE_LOG_LEVEL=ERROR # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR
export JUMPSERVER_RECORD_PATH=/config/guacamole/data/record # 视频录像存放路径
export JUMPSERVER_DRIVE_PATH=/config/guacamole/data/drive # 共享盘路径
export JUMPSERVER_DISABLE_GLYPH_CACHING=true # windows 7/2008/2008r2 和 vnc 频繁断开解决方案
/etc/init.d/guacd start
sh /config/tomcat9/bin/startup.sh
#启动
sh /opt/start_guacamole.sh
Nginx 整合 JumpServer
server {
listen 80;
# server_name _;
client_max_body_size 5000m; 文件大小限制
# Luna 配置
location /luna/ {
proxy_pass http://luna:4200;
}
# Core data 静态资源
location /media/replay/ {
add_header Content-Encoding gzip;
root /opt/jumpserver-v2.9.2/data/;
}
location /media/ {
root /opt/jumpserver-v2.9.2/data/;
}
location /static/ {
root /opt/jumpserver-v2.9.2/data/;
}
# Koko 配置
location /koko/ {
proxy_pass http://koko: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";
}
# Guacamole 配置
location /guacamole/ {
proxy_pass http://guacamole: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://core: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://core: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://core: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://lina: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;
}
}
网友评论