Jump Server 堡垒机搭建及使用

博客作者:联系请点击,搬运不易,希望请作者喝咖啡,可以点击联系博客作者

一、Jump Server简介及环境要求

JumpServer - 开源堡垒机 - 官网

演示视频

Jumpserver 官方介绍

  • Jumpserver 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统。
  • Jumpserver 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好。
  • Jumpserver 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制。
  • Jumpserver 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。

架构图

JumpServer 分为多个组件,大致的架构如下图所示。其中 LinaLuna 为纯静态文件,最终由 nginx 整合。

官方DEMO

https://demo.jumpserver.org/

环境要求

JumpServer 组件及其监听端口
1
Jumpserver 8080/tcp
2
Redis 6379/tcp
3
MySQL/Mariadb 3306/tcp
4
Nginx 80/tcp
5
Koko SSH 2222/tcp Web Terminal 5000/tcp
6
Guacamole 8081/tcp
Copied!
系统: CentOS Linux release 8.4.2105
1
$ uname -r
2
4.18.0-305.3.1.el8.x86_64
Copied!
1
$ cat /etc/redhat-release
2
CentOS Linux release 8.4.2105
Copied!
Name
Core
Python
MySQL
MariaDB
Redis
Version
v2.13.1
>= 3.6
>= 5.7
>= 10.2
>= 6

关闭 SELinux 和防火墙

1
setenforce 0 # 可以设置配置文件永久关闭
2
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
3
firewall-cmd --zone=public --add-port=80/tcp –permanent #nginx 端口
4
firewall-cmd --zone=public --add-port=2222/tcp –permanent #用户SSH登录端口
5
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.17.0.0/16" port protocol="tcp" port="8080" accept" # 设置防火墙规则,允许容器ip访问宿主8080端口
6
firewall-cmd –reload # 重新载入规则
7
iptables -F
8
iptables-save
Copied!

添加镜像源仓库

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区

二、准备 Python3 和 Python 虚拟环境

安装依赖软件包

1
dnf -y install wget gcc epel-release git vim wget unzip make cmake zlib-devel compat-openssl10
Copied!

安装Python3.6

这里要注意的是一定要下载官方指导版本,python3.6以上有些模块不支持,启动jump server会报错
1
dnf install -y python36 python36-devel
Copied!
如果前面已经正常安装了 Python, 可以跳过此步骤,这里提供两种方式
编译安装pyhton-3.6.9
Python官网下载地址:
1
wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
2
tar -xf Python-3.6.9.tgz -C /usr/local/
3
cd /usr/local/Python-3.6.9/
4
yum --exclude=kernel* update -y
5
yum groupinstall -y 'Development Tools'
6
yum install -y gcc openssl-devel bzip2-devel libffi-devel
7
./configure && make && make install
Copied!
Welcome to Python.org
Python.org

建立Python虚拟环境

因为 CentOS 6/7 自带的是 Python2,而 Yum 等工具依赖原来的 Python,为了不扰乱原来的环境我们来使用 Python 虚拟环境
创建虚拟环境,环境命令自定义为py3
1
cd /opt && python3.6 -m venv py3
2
source /opt/py3/bin/activate
Copied!
部分系统可能会提示 source: not found , 可以使用 "." 代替 "source"
1
. /opt/py3/bin/activate
Copied!
看到下面的提示符代表成功,以后运行Jumpserver都要先运行以上source命令,以下所有命令均在虚拟环境中运行
1
(py3) [[email protected] py3]
Copied!

三、安装 Redis

1
dnf -y install redis
2
systemctl enable --now redis
3
systemctl status redis
4
rpm -qa redis
Copied!

设置Redis密码

1
REDIS_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24`
2
echo "REDIS_PASSWORD=$REDIS_PASSWORD" >> ~/.bashrc
3
echo -e "\033[31m 你的REDIS_PASSWORD是 $REDIS_PASSWORD \033[0m"
Copied!
1
sed -i "s/# requirepass foobared/requirepass $REDIS_PASSWORD/g" /etc/redis.conf
2
systemctl restart redis
Copied!

验证密码是否能正常登录成功、查询等

1
redis-cli -h 127.0.0.1 -p 6379 -a $REDIS_PASSWORD
2
127.0.0.1:6379> keys *
3
127.0.0.1:6379> config get requirepass
Copied!

四、安装Mariadb数据库

1
dnf -y install mariadb mariadb-devel mariadb-server
2
systemctl enable --now mariadb
3
systemctl status mariadb
4
rpm -aq mariadb
Copied!

初始化数据库

1
mysql_secure_installation
2
Copied!
1
Enter current password for root (enter for none): # 输入root的当前密码(不输入密码)
2
New password: # 新密码:
3
Re-enter new password: # 重新输入新的密码:
4
Set root password # 设置root密码
5
Remove anonymous users? # 删除匿名用户?
6
Disallow root login remotely? # 禁止远程root登录?
7
Remove test database and access to it? # 删除测试数据库并访问它?
8
Reload privilege tables now? # 现在重新加载特权表?
Copied!

创建数据库 Jumpserver 并授权验证

生成随机数据库密码
1
DB_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24`
2
echo -e "\033[31m 你的数据库密码是 $DB_PASSWORD \033[0m"
Copied!
数据库配置
注意:这里数据库授权时$DB_PASWORD变量,需替换成您自己生成的密码
1
mysql -uroot -p
2
create database jumpserver default charset 'utf8' collate 'utf8_bin';
3
grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '$DB_PASWORD';
4
grant all on jumpserver.* to 'jumpserver'@'localhost' identified by '$DB_PASWORD';
5
flush privileges;
Copied!

数据库用户更改密码SQL语句

1
set password for 'username'@'host' = password('newpassword');
2
flush privileges;
Copied!

验证授权是否正确,是否能正常登录成功

1
mysql -ujumpserver -p
2
show databases;
Copied!

五、安装 Jump Server

下载 Jump Server 项目源码

1
cd /opt && \
2
git clone git://github.com/jumpserver/jumpserver.git
Copied!
网络问题参考文档:国内常用加速配置

安装 软件环境依赖

1
dnf -y install gcc krb5-devel libtiff-devel libjpeg-devel libzip-devel freetype-devel libwebp-devel tcl-devel tk-devel sshpass openldap-devel mariadb-devel libffi-devel openssh-clients telnet openldap-clients
Copied!

安装 Python 库依赖

1
vim ~/.pydistutils.cfg
2
[easy_install]
3
index_url = https://mirrors.aliyun.com/pypi/simple/
Copied!
1
cd /opt/jumpserver/requirements
2
source /opt/py3/bin/activate
3
pip install wheel && \
4
pip install --upgrade pip setuptools && \
5
pip install -r requirements.txt
Copied!

解决报错:

错误一:

解决方法:

setuptools/.pydistutils.cfg at master · jumpserver/setuptools
GitHub

步骤一:按照上面链接复制的两行内容,修改如下文件

1
vim ~/.pydistutils.cfg
2
[easy_install]
3
index_url = https://mirrors.aliyun.com/pypi/simple/
Copied!

步骤二:修改保存好,执行如下命令,完美解决

1
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
Copied!
确保已经载入 py3 虚拟环境, 中间如果遇到报错一般是依赖包没装全。

错误二:

解决方法:

1
pip install 包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
Copied!
如果下载速度很慢, 可以换国内源
1
$ pip install --upgrade pip setuptools -i https://mirrors.aliyun.com/pypi/simple/
2
$ pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
Copied!

修改 Jumpserver 配置文件

1
cd /opt/jumpserver
2
cp config_example.yml config.yml
3
SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`
4
echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc
5
BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`
6
echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc
Copied!
1
sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g" /opt/jumpserver/config.yml
2
sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml
3
sed -i "s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml
4
sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml
5
sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: false/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml
6
sed -i "s/DB_PASSWORD: /DB_PASSWORD: $DB_PASSWORD/g" /opt/jumpserver/config.yml
7
sed -i "s/# REDIS_PASSWORD: /REDIS_PASSWORD: $REDIS_PASSWORD/g" /opt/jumpserver/config.yml
8
sed -i "s/# REDIS_DB_CELERY: 3/REDIS_DB_CELERY: 3/g" /opt/jumpserver/config.yml
9
sed -i "s/# REDIS_DB_CACHE: 4/REDIS_DB_CACHE: 4/g" /opt/jumpserver/config.yml
Copied!
1
echo -e "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m"
2
echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m"
Copied!

确认内容有没有错误

1
cat /opt/jumpserver/config.yml | grep -Evn "^$|#"
Copied!
注意 SECRET_KEY 和 BOOTSTRAP_TOKEN 不能使用纯数字字符串

启动 Jumpserver

确保已经载入 py3 虚拟环境
1
source /opt/py3/bin/activate
2
cd /opt/jumpserver
3
./jms start all -d
Copied!
新版本更新了运行脚本, 使用方式./jms start|stop|status all 后台运行请添加 -d 参数
运行不报错, 请继续往下操作

六、安装 KoKo 组件

KoKo 是 Go 版本的 coco,重构了 coco 的 SSH/SFTP 服务和 Web Terminal 服务。

环境要求

Name
KoKo
Go
Version
v2.13.1
1.15

安装 Go

Go 官方网站参考文档部署 golang,请根据 环境要求,通过命令行中判断是否安装完成:
Releases · jumpserver/koko
GitHub
1
wget https://golang.google.cn/dl/go1.17.linux-amd64.tar.gz
2
tar -xf go1.17.linux-amd64.tar.gz -C /usr/local/
3
chown -R root:root /usr/local/go
4
export PATH=/usr/local/go/bin:$PATH
5
echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.bashrc
Copied!
1
go version
Copied!

设置 Go 国内加速镜像

1
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
Copied!

下载 KoKo 项目源代码

1
cd /opt && \
2
git clone https://github.com/jumpserver/koko.git
Copied!

在 KoKo 项目下构建应用

1
chown -R root:root /opt/koko && \
2
cd koko && make
Copied!
网络问题参考文档:国内常用加速配置
注意:构建完成后, 生成在 build 目录下,以 Linux amd64 服务器为例

1拷贝压缩包文件到对应的服务器

1
通过 make 构建默认的压缩包,文件名如下:
2
koko-[branch name]-[commit]-linux-amd64.tar.gz
Copied!

2、解压编译的压缩包

1
cd /opt/koko/build/
2
tar -xzvf koko-*-linux-amd64.tar.gz
Copied!

3、修改配置文件并运行

BOOTSTRAP_TOKEN 需要从 jumpserver/config.yml 里面获取, 保证一致
1
cd /opt/koko/build/koko-master-*-linux-amd64
2
cp config_example.yml config.yml
3
sed -i "s/BOOTSTRAP_TOKEN: <PleasgeChangeSameWithJumpserver>/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" config.yml
4
sed -i "s/# LOG_LEVEL: INFO/LOG_LEVEL: ERROR/g" config.yml
5
sed -i "s/# SHARE_ROOM_TYPE: local/SHARE_ROOM_TYPE: redis/g" config.yml
6
sed -i "s/# REDIS_HOST: 127.0.0.1/REDIS_HOST: 127.0.0.1/g" config.yml
7
sed -i "s/# REDIS_PORT: 6379/REDIS_PORT: 6379/g" config.yml
8
sed -i "s/# REDIS_PASSWORD:/REDIS_PASSWORD: $REDIS_PASSWORD/g" config.yml
9
sed -i "s/# REDIS_DB_ROOM:/REDIS_DB_ROOM: 6/g" config.yml
Copied!
1
cat /opt/koko/build/koko-master-*-linux-amd64/config.yml | grep -Evn "^$|#"
Copied!

启动 KoKo

1
cd /opt/koko/build/koko-master-*-linux-amd64 && ./koko -d
Copied!
新版本更新了运行脚本, 使用方式./koko -s start|stop|status 后台运行请添加 -d 参数

查看启动状态

1
./koko -s status
Copied!

七、部署 Guacamole Server

1
wget http://download.jumpserver.org/public/guacamole-server-1.3.0.tar.gz && \
2
tar -xf guacamole-server-1.3.0.tar.gz
Copied!
1
cd /opt/guacamole-server-1.3.0 && \
2
wget http://download.jumpserver.org/public/ssh-forward.tar.gz && \
3
tar -xf ssh-forward.tar.gz -C /bin/ && \
4
chmod +x /bin/ssh-forward
Copied!
根据 Guacamole官方文档 文档安装对应的依赖包
Guacamole具有许多依赖关系,此步骤解决了大多数依赖关系。从官方存储库获取软件包是一个挑战,因此您会注意到我使用了Devel存储库中的一些软件包。一旦安装了所有必需的软件包,请禁用它们。

更新所有的包和依赖

要更新所有的包和它们的依赖,在root权限下执行如下命令:
1
dnf update -y
2
dnf config-manager --set-enabled PowerTools
3
dnf config-manager --enable Devel
4
dnf -y install libtool libwebsockets-devel libtheora opus lame-libs libjpeg-turbo-devel ghostscript
5
dnf config-manager --disable Devel
Copied!
1
dnf -y install SDL2 ffmpeg libtelnet-devel
Copied!
1
dnf -y install cairo-devel libjpeg-devel libpng-devel uuid-devel libvncserver-devel pulseaudio-libs-devel freerdp-devel libssh2-devel openssl-devel pango-devel pango-devel ffmpeg-devel libvorbis-devel libwebp-devel freerdp-plugins
Copied!

编译安装 guacamole 服务

1
cd /opt/guacamole-server-1.3.0
2
autoreconf -fi
3
./configure --with-init-dir=/etc/init.d && \
4
make && \
5
make install && ldconfig
Copied!

更新systemd以找到/etc/init.d/目录中安装的guacd (Guacamole)服务

1
systemctl daemon-reload
Copied!

设置 Guacamole 环境变量

勿多次执行以下环境设置
1
export JUMPSERVER_SERVER=http://127.0.0.1:8080
2
echo "export JUMPSERVER_SERVER=http://127.0.0.1:8080" >> ~/.bashrc
3
export BOOTSTRAP_TOKEN="$BOOTSTRAP_TOKEN"
4
echo "export BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc
5
export JUMPSERVER_KEY_DIR=/config/guacamole/data/keys
6
echo "export JUMPSERVER_KEY_DIR=/config/guacamole/data/keys" >> ~/.bashrc
7
export GUACAMOLE_HOME=/config/guacamole
8
echo "export GUACAMOLE_HOME=/config/guacamole" >> ~/.bashrc
9
export GUACAMOLE_LOG_LEVEL=ERROR
10
echo "export GUACAMOLE_LOG_LEVEL=ERROR" >> ~/.bashrc
11
export JUMPSERVER_ENABLE_DRIVE=true
12
echo "export JUMPSERVER_ENABLE_DRIVE=true" >> ~/.bashrc
Copied!
环境变量说明
1
JUMPSERVER_SERVER 指 core 访问地址
2
BOOTSTRAP_TOKEN 为 Jumpserver/config.yml 里面的 BOOTSTRAP_TOKEN 值
3
JUMPSERVER_KEY_DIR 认证成功后 key 存放目录
4
GUACAMOLE_HOME 为 guacamole.properties 配置文件所在目录
5
GUACAMOLE_LOG_LEVEL 为生成日志的等级
6
JUMPSERVER_ENABLE_DRIVE 为 rdp 协议挂载共享盘
Copied!

启动 Guacamole

1
systemctl start guacd
2
systemctl enable guacd
Copied!
1
systemctl status guacd
Copied!

八、安装 Lion 组件

Lion 使用了 Apache 软件基金会的开源项目 Guacamole,JumpServer 使用 Golang 和 Vue 重构了 Guacamole 实现 RDP/VNC 协议跳板机功能。

环境要求

Name
JumpServer
Guacd
Lion
Version
v2.13.1
1.3.0
v2.13.1
Lion 是基于 Apache Guacamole 开发,原生部署 Lion 需要有 Guacamole Server (版本 >= 1.3.0)。

下载 Lion 项目源代码

1
cd /opt
2
wget https://github.com/jumpserver/lion-release/releases/download/v2.13.1/lion-v2.13.1-linux-amd64.tar.gz
3
tar -xf lion-v2.13.1-linux-amd64.tar.gz
4
5
cd /opt && \
6
git clone git://github.com/jumpserver/lion-release.git
Copied!
网络问题参考文档:国内常用加速配置

修改 Lion 配置文件

Lion 的启动配置,参考 config_example
1
cd cd /opt/lion-release
2
cp config_example.yml config.yml
3
sed -i "s/BOOTSTRAP_TOKEN: <PleasgeChangeSameWithJumpserver>/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" config.yml
Copied!

启动 Lion

/etc/systemd/system 目录创建 lion-v2.10.0.service 文件并配置以下内容
1
vi /etc/systemd/system/lion.service
2
3
[Unit]
4
Description=JumpServer Lion Service
5
After=network.target
6
7
[Service]
8
Type=simple
9
User=root
10
Group=root
11
12
WorkingDirectory=/opt/lion-v2.13.1-linux-amd64
13
ExecStart=/opt/lion-v2.13.1-linux-amd64/lion -f /opt/lion-release/config.yml
14
Restart=on-failure
15
16
[Install]
17
WantedBy=multi-user.target
Copied!

重载系统服务

1
systemctl daemon-reload
Copied!
1
systemctl start lion
2
systemctl enable lion
Copied!

查看 Lion 服务状态

1
systemctl status lion
Copied!

、安装 Node

1
curl -fsSL https://rpm.nodesource.com/setup_16.x | bash -
Copied!
1
yum install -y nodejs
Copied!

检查是否安装成功及查看安装的版本

1
[[email protected] lion-release]# node -v
2
v16.7.0
3
[[email protected] lion-release]# npm -v
4
7.20.3
Copied!

十、安装 Lina 组件

Lina 是 JumpServer 的前端 UI 项目,主要使用 VueElement UI 完成。

环境要求

Name
Lina
Node
Version
v2.13.1
10

下载 Lina 项目源代码

1
cd /opt && \
2
git clone git://github.com/jumpserver/lina.git
Copied!

1
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass
2
npm config set registry https://registry.npm.taobao.org
3
npm install -g yarn
4
yarn config set registry https://registry.npm.taobao.org
Copied!

安装依赖

1
npm install -g yarn
2
yarn install
Copied!

修改配置文件⚓︎

1
sed -i "s/VUE_APP_CORE_HOST = 'http://localhost:8080'/VUE_APP_CORE_HOST = $JUMPSERVER_SERVER:8080/g" /opt/lina/.env.development
Copied!

运行 Lina⚓︎

1
yarn serve
Copied!

构建 Lina⚓︎

构建完成后的 lina 包为 html 文件,可以直接移到到 nginx 服务器。
1
yarn build:prod
Copied!
构建完成后, 生成在 build 目录下

十一、安装 Luna 组件

Luna 是 JumpServer 的前端 UI 项目,主要使用 Angular CLI 完成。

环境要求⚓︎

Name
Luna
Node
Version
v2.13.1
10

下载 Luna 项目源代码

这个项目是用Angular CLI 1.3.2 版生成的。
1
cd /opt && \
2
git clone git://github.com/jumpserver/luna.git
Copied!

安装依赖

1
npm -i
2
npm rebuild node-sass
Copied!

修改 Luna 配置文件

1
vi proxy.conf.json
Copied!
1
{
2
"/koko": {
3
"target": "http://localhost:5000", # KoKo 地址
4
"secure": false,
5
"ws": true
6
},
7
"/media/": {
8
"target": "http://localhost:8080", # Core 地址
9
"secure": false,
10
"changeOrigin": true
11
},
12
"/api/": {
13
"target": "http://localhost:8080", # Core 地址
14
"secure": false, # https ssl 需要开启
15
"changeOrigin": true
16
},
17
"/core": {
18
"target": "http://localhost:8080", # Core 地址
19
"secure": false,
20
"changeOrigin": true
21
},
22
"/static": {
23
"target": "http://localhost:8080", # Core 地址
24
"secure": false,
25
"changeOrigin": true
26
},
27
"/lion": {
28
"target": "http://localhost:9529", # Lion 地址
29
"secure": false,
30
"pathRewrite": {
31
"^/lion/monitor": "/monitor"
32
},
33
"ws": true,
34
"changeOrigin": true
35
},
36
"/omnidb": {
37
"target": "http://localhost:8082",
38
"secure": false,
39
"ws": true,
40
"changeOrigin": true
41
}
42
}
Copied!

运行 Luna

1
ng serve
Copied!

构建 Luna

可以加 -prod 来进行生产构建 ng build -prod
1
ng build
Copied!
构建完成后, 生成在 build 目录下

十二、安装 Nginx

1
vim /etc/yum.repos.d/nginx.repo
Copied!
1
[nginx-stable]
2
name=nginx stable repo
3
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
4
gpgcheck=1
5
enabled=1
6
gpgkey=https://nginx.org/keys/nginx_signing.key
7
module_hotfixes=true
8
9
[nginx-mainline]
10
name=nginx mainline repo
11
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
12
gpgcheck=1
13
enabled=0
14
gpgkey=https://nginx.org/keys/nginx_signing.key
15
module_hotfixes=true
Copied!
1
dnf makecache timer
2
dnf info nginx
3
dnf install -y nginx
Copied!

配置 Nginx 整合各组件

修改配置文件

1
vim /etc/nginx/conf.d/jumpserver.conf
Copied!
1
server {
2
server_name zhiqiang.cloud;
3
listen 80; # 代理端口, 通过此端口重定向到443访问, 不再通过8080端口
4
if ($host = zhiqiang.cloud) { # 修改成你的域名或者注释掉,多个域名,以空格分开
5
return 301 https://$host$request_uri; # 将 http 重定向 https
6
}
7
return 404; # 访问80端口跳转404状态码
8
}
9
10
11
server {
12
13
listen 443 ssl; # 服务器开启443端口, 以后将通过此端口进行访问, 不再通过8080端口
14
server_name zhiqiang.cloud; # 修改成你的域名或者注释掉,多个域名,以空格分开
15
16
ssl_certificate /etc/nginx/conf.d/ssl/zhiqiang.cloud.pem; # pem文件的路径
17
ssl_certificate_key /etc/nginx/conf.d/ssl/zhiqiang.cloud.key; # key文件的路径
18
19
ssl_session_timeout 5m; # 缓存有效期
20
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 安全链接可选的加密协议
21
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; # 加密算法
22
ssl_prefer_server_ciphers on; # 使用服务器端的首选算法
23
client_max_body_size 100m; # 录像及文件上传大小限制
24
25
26
27
# Luna 配置
28
location /luna/ {
29
proxy_pass http://luna:4200;
30
}
31
32
# Core data 静态资源
33
location /media/replay/ {
34
add_header Content-Encoding gzip;
35
root /opt/jumpserver-v2.13.1/data/;
36
}
37
38
location /media/ {
39
root /opt/jumpserver-v2.13.1/data/;
40
}
41
42
location /static/ {
43
root /opt/jumpserver-v2.13.1/data/;
44
}
45
46
# KoKo Lion 配置
47
location /koko/ {
48
proxy_pass http://koko:5000;
49
proxy_set_header X-Real-IP $remote_addr;
50
proxy_set_header Host $host;
51
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
52
proxy_http_version 1.1;
53
proxy_buffering off;
54
proxy_set_header Upgrade $http_upgrade;
55
proxy_set_header Connection "upgrade";
56
}
57
58
# lion 配置
59
location /lion/ {
60
proxy_pass http://lion:8081;
61
proxy_buffering off;
62
proxy_request_buffering off;
63
proxy_http_version 1.1;
64
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
65
proxy_set_header Upgrade $http_upgrade;
66
proxy_set_header Connection $http_connection;
67
proxy_ignore_client_abort on;
68
proxy_connect_timeout 600;
69
proxy_send_timeout 600;
70
proxy_read_timeout 600;
71
send_timeout 6000;
72
}
73
74
# Core 配置
75
location /ws/ {
76
proxy_pass http://core:8070;
77
proxy_set_header X-Real-IP $remote_addr;
78
proxy_set_header Host $host;
79
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
80
proxy_http_version 1.1;
81
proxy_buffering off;
82
proxy_set_header Upgrade $http_upgrade;
83
proxy_set_header Connection "upgrade";
84
}
85
86
location /api/ {
87
proxy_pass http://core:8080;
88
proxy_set_header X-Real-IP $remote_addr;
89
proxy_set_header Host $host;
90
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
91
}
92
93
location /core/ {
94
proxy_pass http://core:8080;
95
proxy_set_header X-Real-IP $remote_addr;
96
proxy_set_header Host $host;
97
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
98
}
99
100
# 前端 Lina
101
location /ui/ {
102
proxy_pass http://lina:9528;
103
proxy_set_header X-Real-IP $remote_addr;
104
proxy_set_header Host $host;
105
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
106
}
107
108
location / {
109
rewrite ^/(.*)$ /ui/$1 last;
110
}
111
}
Copied!

运行 Nginx

确保配置没有问题, 有问题请先解决
1
nginx -t
Copied!
1
systemctl enable --now nginx
Copied!

十三、开始使用 Jumpserver

检查应用是否已经正常运行
服务全部启动后, 访问 JumpServer 服务器 nginx 代理的 80 端口, 不要通过8080端口访问 默认账号: admin 密码: admin
默认账号: admin 密码: admin
到Jumpserver 会话管理-终端管理 检查 koko Guacamole 等应用的注册。

测试连接

如果登录客户端是 macOS 或 Linux, 登录语法如下
1
2
sftp -P2222 [email protected]
Copied!
密码: admin
如果登录客户端是 Windows, Xshell Terminal 登录语法如下
Copied!
密码: admin
如果能登陆代表部署成功
# sftp默认上传的位置在资产的 /tmp 目录下
# windows拖拽上传的位置在资产的 Guacamole RDP上的 G 目录下
1
ssh -p2222 [email protected]
Copied!

系统设置

修改 url 的"localhost"为你的实际 url 地址, 否则邮件收到的地址将为"localhost" 也无法创建新用户

邮件设置

# 点击页面上边的"邮件设置", 进入邮件设置页面
# 默认使用 25 端口, 不勾选 SSL 和 TLS; 如果需要勾选 SSL, 端口需要修改成 465; 如果需要勾选 TLS, 端口需要改成 587
# 不可以同时勾选 SSL 和 TLS
# 配置邮件服务后, 点击页面的"测试连接"按钮, 如果配置正确, Jumpserver 会发送一条测试邮件到您的 SMTP 账号邮箱里面, 确定收到测试邮件后点击保存即可使用

点测试后会收到一封测试邮件

邮件设置的查看方法