技术标签: JumpServer jumpserver
JumpServer版本:https://github.com/jumpserver/jumpserver/releases
JumpServer采用一键部署脚本的交互式安装方式,安装过程非常方便,整个服务都是使用Docker容器来运行的。
参考官方快速部署文档:https://docs.jumpserver.org/zh/master/install/setup_by_fast/
安装环境要求
- 2核CPU、8G内存,保证足够的磁盘空间;
- CentOS 7.x系统;
- 连接互联网;
- 使用root用户执行。
数据库和缓存要求(推荐使用外置的数据库和缓存,以便后期扩展):
- MySQL >= 5.7 或 MariaDB >= 10.2
- Redis >= 5.0
自动部署
export DOCKER_IMAGE_PREFIX=swr.cn-north-1.myhuaweicloud.com curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.7.1/quick_start.sh | bash # 如果出现问题 cd /opt/jumpserver-installer-v2.7.1 ./jmsctl.sh --help
手动部署
export DOCKER_IMAGE_PREFIX=swr.cn-north-1.myhuaweicloud.com cd /opt yum -y install wget wget https://github.com/jumpserver/installer/releases/download/v2.7.1/jumpserver-installer-v2.7.1.tar.gz tar -xf jumpserver-installer-v2.7.1.tar.gz cd jumpserver-installer-v2.7.1 cat config-example.txt
启动
到默认的安装目录
/opt/jumpserver-install-v2.7.1
,执行:./jmsctl.sh start
本次实验采用自动部署的方式,安装JumpServer-2.7.1。
采用外置数据库和缓存的方式进行安装。
MySQL数据库和Redis已提前在node100上安装完成。
因为有中文数据插入需要,MySQL需要设置默认字符集为UTF8,分别编辑mysqld.cnf
和mysql.cnf
进行设置。
也可以在创建数据库时指定字符集为UTF-8,这样就不需要设置默认字符集了。
root@node100:~# vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
character-set-server=utf8
root@node100:~# vim /etc/mysql/conf.d/mysql.cnf
[mysql]
default-character-set=utf8
设置完成后重启mysql:
root@node100:~# systemctl restart mysql
验证默认字符集:
mysql> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.04 sec)
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
创建数据库:
mysql> CREATE DATABASE jumpserver;
如果未设置默认字符集为 UTF-8,则需要在创建数据库时指定字符集:
create database jumpserver default charset 'utf8';
创建jumpserver用户并授权:
mysql> GRANT ALL PRIVILEGES ON jumpserver.* TO 'jumpserver'@'192.168.1%' IDENTIFIED BY '123456';
在node201上验证jumpserver用户是否能远程登录:
[root@node201 ~]# mysql -ujumpserver -p -h192.168.1.100
Enter password:
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| jumpserver |
+--------------------+
redis配置文件内容如下:
root@node100:~# cat /apps/redis/etc/redis.conf
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised systemd
pidfile /apps/redis/run/redis_6379.pid
loglevel notice
logfile "/apps/redis/logs/redis_6379.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error no
rdbcompression yes
rdbchecksum yes
dbfilename dump_6379.rdb
dir /apps/redis/data
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 0
repl-disable-tcp-nodelay no
repl-backlog-size 100mb
slave-priority 100
requirepass 123456
maxmemory 536870912
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly yes
appendfilename "appendonly_6379.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble no
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
验证从node201是否能远程连接redis:
先将node100的redis-cli拷贝到node201:
root@node100:~# scp /apps/redis/bin/redis-cli 192.168.1.201:/bin
[root@node201 ~]# redis-cli -h 192.168.1.100
192.168.1.100:6379> auth 123456
OK
JumpServer官方推荐使用华为云作为容器镜像服务,也给出了可用仓库地址列表,可以根据自己所在地理位置选择相对较近的地址:
区域 | 镜像仓库地址 | 使用方式 |
---|---|---|
华北-北京一 | swr.cn-north-1.myhuaweicloud.com | export DOCKER_IMAGE_PREFIX=swr.cn-north-1.myhuaweicloud.com |
华北-北京四 | swr.cn-north-4.myhuaweicloud.com | export DOCKER_IMAGE_PREFIX=swr.cn-north-4.myhuaweicloud.com |
华南-广州 | swr.cn-south-1.myhuaweicloud.com | export DOCKER_IMAGE_PREFIX=swr.cn-south-1.myhuaweicloud.com |
华东-上海一 | swr.cn-east-3.myhuaweicloud.com | export DOCKER_IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com |
JumpServer的自动部署脚本是将 Docker镜像仓库的地址设为DOCKER_IMAGE_PREFIX
变量。
设置变量:
[root@node201 ~]# export DOCKER_IMAGE_PREFIX=swr.cn-north-1.myhuaweicloud.com
获取自动部署脚本quick_start.sh
的内容并直接用bash
运行:
因为脚本在github上,国内可能存在github访问过慢的情况,导致直接运行下方命令出现超时;
可以先在浏览器访问https://github.com/jumpserver/jumpserver/releases/download/v2.7.1/quick_start.sh,将脚本下载下来后再上传到服务器运行。
[root@node201 ~]# curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.7.1/quick_start.sh | bash
运行quick_start.sh
脚本:
[root@node201 ~]# bash quick_start.sh
██╗██╗ ██╗███╗ ███╗██████╗ ███████╗███████╗██████╗ ██╗ ██╗███████╗██████╗
██║██║ ██║████╗ ████║██╔══██╗██╔════╝██╔════╝██╔══██╗██║ ██║██╔════╝██╔══██╗
██║██║ ██║██╔████╔██║██████╔╝███████╗█████╗ ██████╔╝██║ ██║█████╗ ██████╔╝
██ ██║██║ ██║██║╚██╔╝██║██╔═══╝ ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██╔══╝ ██╔══██╗
╚█████╔╝╚██████╔╝██║ ╚═╝ ██║██║ ███████║███████╗██║ ██║ ╚████╔╝ ███████╗██║ ██║
╚════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝
Version: v2.7.1
选择语言(默认中文):
语言 Language (cn/en) (default cn):
【注意】
前边的配置均保持默认:
>>> 安装配置 JumpServer
1. 检查配置文件
配置文件位置: /opt/jumpserver/config/config.txt
完成
2. 配置 Nginx
配置文件: /opt/jumpserver/config/nginx/cert
完成
3. 备份配置文件
Back up to /opt/jumpserver/config/backup/config.txt.2021-03-16_09-16-54
完成
4. 配置网络
是否需要支持 IPv6? (y/n) (默认为 n):
完成
5. 配置加密密钥
自动生成 SECRETE_KEY: CmxvOiBmbGFncz03MzxVUCxMT09QQkFDSyxSVU5OSU5HPiAgb
自动生成 BOOTSTRAP_TOKEN: CmxvOiBmbGFncz03
完成
持久化目录在安装后不可修改,所以直接配置一个大磁盘,这里配置在默认目录/opt/jumpserver
:
6. 配置持久化目录
修改日志录像等持久化的目录,可以找个最大的磁盘,并创建目录,如 /opt/jumpserver
注意:安装后不能更改,否则数据库可能会丢失
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdb1 50G 34M 50G 1% /opt
/dev/sda1 509M 139M 370M 28% /boot
持久化存储目录 (默认为 /opt/jumpserver):
完成
选择使用外部MySQL和Redis,分别配置数据库和redis为之前准备好的服务器。
7. 配置 MySQL
是否使用外部 MySQL? (y/n) (默认为 n): y
请输入 mysql 的主机地址 (无默认值): 192.168.1.100
请输入 mysql 的端口 (默认为 3306):
请输入 mysql 的数据库 (默认为 jumpserver):
请输入 mysql 的用户名 (无默认值): jumpserver
请输入 mysql 的密码 (无默认值): 123456
完成
8. 配置 Redis
是否使用外部 Redis? (y/n) (默认为 n): y
请输入 Redis 的主机地址 (无默认值): 192.168.1.100
请输入 Redis 的端口 (默认为 6379):
请输入 Redis 的密码 (无默认值): 123456
完成
自动部署脚本会下载、配置并启动docker,完成容器运行环境的准备工作,并拉取相关镜像;
过程中仅需指定Docker容器的存储路径,其它操作由脚本自动完成。
这里,在
/opt/jumpserver-installer-v2.7.1/scripts/0_prepare.sh
脚本中就会调用之前设置的环境变量DOCKER_IMAGE_PREFIX
:[root@node201 ~]# cd /opt/jumpserver-installer-v2.7.1/scripts/ [root@node201 scripts]# grep 'DOCKER_IMAGE_PREFIX' ./* ./0_prepare.sh:DOCKER_IMAGE_PREFIX="${DOCKER_IMAGE_PREFIX-}" ./0_prepare.sh: if [[ -n "${DOCKER_IMAGE_PREFIX}" && $(image_has_prefix "${image}") == "0" ]]; then ./0_prepare.sh: docker pull "${DOCKER_IMAGE_PREFIX}/${image}" ./0_prepare.sh: docker tag "${DOCKER_IMAGE_PREFIX}/${image}" "${image}"
安装 Docker,下载Docker Compose:
>>> 安装配置 Docker
1. 安装 Docker
开始下载 Docker 程序 ...
--2021-03-16 09:17:25-- https://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/docker-18.06.2-ce.tgz
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 223.15.177.244, 223.15.177.238, 223.15.177.239, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|223.15.177.244|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:43834194 (42M) [application/octet-stream]
正在保存至: “/tmp/docker.tar.gz”
100%[=============================================================================================================================>] 43,834,194 18.3MB/s 用时 2.3s
2021-03-16 09:17:27 (18.3 MB/s) - 已保存 “/tmp/docker.tar.gz” [43834194/43834194])
开始下载 Docker Compose 程序 ...
--2021-03-16 09:17:29-- https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-Linux-x86_64
正在解析主机 get.daocloud.io (get.daocloud.io)... 106.75.86.15
正在连接 get.daocloud.io (get.daocloud.io)|106.75.86.15|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 FOUND
位置:https://dn-dao-github-mirror.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-Linux-x86_64 [跟随至新的 URL]
--2021-03-16 09:17:30-- https://dn-dao-github-mirror.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-Linux-x86_64
正在解析主机 dn-dao-github-mirror.daocloud.io (dn-dao-github-mirror.daocloud.io)... 240e:925:7000:1:3::3fd, 240e:925:7000:1:3::3fe, 223.15.177.239, ...
正在连接 dn-dao-github-mirror.daocloud.io (dn-dao-github-mirror.daocloud.io)|240e:925:7000:1:3::3fd|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:12218968 (12M) [application/x-executable]
正在保存至: “/tmp/docker-compose”
100%[=============================================================================================================================>] 12,218,968 15.2MB/s 用时 0.8s
2021-03-16 09:17:31 (15.2 MB/s) - 已保存 “/tmp/docker-compose” [12218968/12218968])
完成
配置Docker:
这里我将Docker的存储目录保持了默认的
/opt/docker
,因为根分区较小,专门挂载了一块磁盘在/opt
,可以保证实验所需的磁盘空间。
2. 配置 Docker
修改 Docker 镜像容器的默认存储目录, 可以找个最大的磁盘, 并创建目录, 如 /opt/docker
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdb1 50G 185M 50G 1% /opt
/dev/sda1 509M 139M 370M 28% /boot
Docker 镜像存储目录 (默认为 /opt/docker):
完成
启动Docker,并拉取相关镜像:
可以看到分别拉取了mysql、redis、nginx,以及jumpserver的各组件镜像。
3. 启动 Docker
Docker version has changed or Docker configuration file has been changed, do you want to restart? (y/n) (默认为 y):
完成
>>> 加载 Docker 镜像
[jumpserver/redis:6-alpine]
[jumpserver/mysql:5]
[jumpserver/nginx:alpine2]
[jumpserver/luna:v2.7.1]
[jumpserver/core:v2.7.1]
[jumpserver/koko:v2.7.1]
[jumpserver/guacamole:v2.7.1]
[jumpserver/lina:v2.7.1]
>>> 安装完成了
1. 可以使用如下命令启动, 然后访问
./jmsctl.sh start
2. 其它一些管理命令
./jmsctl.sh stop
./jmsctl.sh restart
./jmsctl.sh backup
./jmsctl.sh upgrade
更多还有一些命令, 你可以 ./jmsctl.sh --help 来了解
3. Web 访问
http://192.168.1.201:8080
https://192.168.1.201:8443
默认用户: admin 默认密码: admin
4. SSH/SFTP 访问
ssh [email protected] -p2222
sftp -P2222 [email protected]
5. 更多信息
我们的官网: https://www.jumpserver.org/
我们的文档: https://docs.jumpserver.org/
使用jmsctl.sh
脚本启动JumpServer:
脚本路径为
/opt/jumpserver-installer-v2.7.1/jmsctl.sh
[root@node201 ~]# cd /opt/jumpserver-installer-v2.7.1/
[root@node201 jumpserver-installer-v2.7.1]# ./jmsctl.sh start
Creating network "jms_net" with driver "bridge"
Creating jms_core ... done
Creating jms_koko ... done
Creating jms_luna ... done
Creating jms_celery ... done
Creating jms_lina ... done
Creating jms_guacamole ... done
Creating jms_nginx ... done
启动时,就是通过docker-compose编排启动yml中定义好的容器,yml文件如下:
[root@node201 ~]# ll /opt/jumpserver-installer-v2.7.1/compose/ 总用量 40 drwxrwxr-x 2 root root 29 1月 21 19:45 config_static -rw-rw-r-- 1 root root 2785 1月 21 19:45 docker-compose-app.yml -rw-rw-r-- 1 root root 652 1月 21 19:45 docker-compose-es.yml -rw-rw-r-- 1 root root 668 1月 21 19:45 docker-compose-lb.yml -rw-rw-r-- 1 root root 590 1月 21 19:45 docker-compose-mysql.yml -rw-rw-r-- 1 root root 196 1月 21 19:45 docker-compose-network_ipv6.yml -rw-rw-r-- 1 root root 134 1月 21 19:45 docker-compose-network.yml -rw-rw-r-- 1 root root 449 1月 21 19:45 docker-compose-omnidb.yml -rw-rw-r-- 1 root root 588 1月 21 19:45 docker-compose-redis.yml -rw-rw-r-- 1 root root 605 1月 21 19:45 docker-compose-task.yml -rw-rw-r-- 1 root root 542 1月 21 19:45 docker-compose-xpack.yml
验证容器启动情况:
[root@node201 ~]# docker ps
验证数据库:
[root@node201 ~]# mysql -ujumpserver -p -h192.168.1.100
Enter password:
MySQL [(none)]> use jumpserver;
Database changed
MySQL [jumpserver]> show tables;
+----------------------------------------------+
| Tables_in_jumpserver |
+----------------------------------------------+
| applications_application |
| assets_adminuser |
| assets_asset |
| assets_asset_labels |
……
浏览器输入http://192.168.1.201:8080/,输入默认管理员账号admin/admin:
会提示重置密码:
使用重置的密码登录,进入JumpServer页面:
文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr
文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc
文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8
文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束
文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求
文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname
文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立
文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码
文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词
文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限
文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定
文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland