环境:CentOS Linux release 7.5.1804 (Core)
内核:3.10.0-862.el7.x86_64
数据库:MySQL5.7
详细参考官方文档:http://docs.jumpserver.org/zh/docs/step_by_step.html
第一步:关闭firewalld 和 selinux ,修改字符集
# setenforce 0 # 临时关闭,重启后失效
# systemctl stop firewalld.service # 临时关闭,重启后失效
# 修改字符集,否则可能报 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
第二步: 准备 Python3 和 Python 虚拟环境
2.1 安装依赖包
# yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
2.2 编译安装
# wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
# tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
# ./configure && make && make install
3.3 建立 Python 虚拟环境
# cd /opt
# python3 -m venv py3
# source /opt/py3/bin/activate
3.4 出现下面的样子,代表成功,以后的操作都在这个下面操作,别忘source /opt/py3/bin/activate
(py3) [root@localhost py3]
第三步:安装 Jumpserver(别忘source /opt/py3/bin/activate)
3.1 下载或 Clone 项目
# cd /opt/
# git clone https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master
# echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env # 进入 jumpserver 目录时将自动载入 python 虚拟环境
3.2 安装依赖 RPM 包
# cd /opt/jumpserver/requirements
# yum -y install $(cat rpm_requirements.txt) # 如果没有任何报错请继续
3.3 安装 Python 库依赖
# pip install -r requirements.txt
pip可以指定源(指定不指定,随意)
mkdir ~/.pip
touch ~/.pip/pip.conf
添加 [global]
trusted-host=mirrors.aliyun.com
index-url=http://mirrors.aliyun.com/pypi/simple/
3.4 安装 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke
# yum -y install redis
# systemctl enable redis
# systemctl start redis
3.5 安装 MySQL
# wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
# rpm -ivh mysql57-community-release-el7-8.noarch.rpm
# yum install mysql-server -y
# systemctl start mysqld
# systemctl enable mysqld
3.6 创建数据库 Jumpserver 并授权
$ mysql -uroot -p
> create database jumpserver default charset 'utf8';
> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'weakPassword';
> flush privileges;
3.7 修改 Jumpserver 配置文件
# cd /opt/jumpserver
# cp config_example.py config.py
# vim config.py (把这几行的配置文件去掉,密码也换成授权的数据库密码)
# MySQL or postgres setting like:
DB_ENGINE = os.environ.get("DB_ENGINE") or 'mysql'
DB_HOST = os.environ.get("DB_HOST") or '127.0.0.1'
DB_PORT = os.environ.get("DB_PORT") or 3306
DB_USER = os.environ.get("DB_USER") or 'jumpserver'
DB_PASSWORD = os.environ.get("DB_PASSWORD") or 'tiger123'
DB_NAME = os.environ.get("DB_NAME") or 'jumpserver'
HTTP_BIND_HOST = '这里改为自己的本机IP'
3.8 生成数据库表结构和初始化数据
# cd /opt/jumpserver/utils
# bash make_migrations.sh
3.9 运行 Jumpserver
# cd /opt/jumpserver
# ./jms start all # 后台运行使用 -d 参数./jms start all -d
运行不报错,请浏览器访问 http://IP:8080/ 默认账号: admin 密码: admin 页面显示不正常先不用处理,继续往下操作,后面搭建 nginx 代理后即可正常访问,原因是因为 django 无法在非 debug 模式下加载静态资源
四. 安装 SSH Server 和 WebSocket Server: Coco
4.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 虚拟环境
4.2 安装依赖
# cd /opt/coco/requirements
# yum -y install $(cat rpm_requirements.txt)
# pip install -r requirements.txt
4.3 修改配置文件并运行
# cd /opt/coco
# mkdir keys
# cp conf_example.py conf.py # 如果 coco 与 jumpserver 分开部署,请手动修改 conf.py
# vim conf.py //这里我只是改动了一处,把这行的注释解开,修改为自己的本机IP
CORE_HOST = os.environ.get("CORE_HOST") or 'http://coco安装的本机IP:8080'
4.4 启动coco
# ./cocod start # 后台运行使用 -d 参数./cocod start -d
启动成功后去Jumpserver 会话管理-终端管理(http://coco本机IP:8080/terminal/terminal/)接受coco的注册
五. 安装 Web Terminal 前端: Luna
Luna 已改为纯前端,需要 Nginx 来运行访问。
访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包,直接解压,不需要编译
5.1 解压 Luna
# cd /opt
# wget https://github.com/jumpserver/luna/releases/download/1.4.3/luna.tar.gz
# tar xvf luna.tar.gz
# chown -R root:root luna
六. 安装 Windows 支持组件(如果不需要管理 windows 资产,可以直接跳过这一步)
6.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
# systemctl start docker
# systemctl status docker
6.2 启动 Guacamole
这里所需要注意的是 guacamole 暴露出来的端口是 8081,若与主机上其他端口冲突请自定义
# 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地址,也就是自己的IP+8080端口> \
jumpserver/guacamole:latest
启动成功后去Jumpserver 会话管理-终端管理(http://IP:8080/terminal/terminal/)接受[Gua]开头的一个注册
七. 配置 Nginx 整合各组件
7.1 安装 Nginx 根据喜好选择安装方式和版本
# yum -y install nginx
7.2 准备配置文件 修改 /etc/nginx/nginx.conf
# vim /etc/nginx/nginx.conf
# 注意注释 nginx.conf 里面的 server {} 内容 ,CentOS 6 需要修改文件 /etc/nginx/cond.f/default.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location /luna/ {
try_files $uri / /index.html;
alias /opt/luna/;
}
location /media/ {
add_header Content-Encoding gzip;
root /opt/jumpserver/data/;
}
location /static/ {
root /opt/jumpserver/data/;
}
location /socket.io/ {
proxy_pass http://192.168.3.211:5000/socket.io/;
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 /coco/ {
proxy_pass http://192.168.3.211:5000/coco/;
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://192.168.3.211: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 / {
proxy_pass http://192.168.3.211: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;
}
7.3 运行 Nginx
nginx -t # 确保配置没有问题, 有问题请先解决
# CentOS 7
# systemctl start nginx
# systemctl enable nginx
7.4 开始使用 Jumpserver
# cd /opt/jumpserver
# ./jms status # 确定jumpserver已经运行,如果没有运行请重新启动jumpserver
# cd /opt/coco
# ./cocod status # 确定jumpserver已经运行,如果没有运行请重新启动coco
# 如果安装了 Guacamole
# docker ps # 检查容器是否已经正常运行,如果没有运行请重新启动Guacamole
服务全部启动后,访问 http://IP(不带端口),访问nginx代理的端口,不要再通过8080端口访问
默认账号: admin 密码: admin
如果部署过程中没有接受应用的注册,需要到Jumpserver 会话管理-终端管理 接受 Coco Guacamole 等应用的注册。
###测试连接
如果登录客户端是 macOS 或 Linux ,登录语法如下
# ssh -p2222 admin@IP
# sftp -P2222 admin@IP
密码: admin
如果登录客户端是 Windows ,Xshell Terminal 登录语法如下
# ssh admin@IP 2222
# sftp admin@IP 2222
密码: admin
如果能登陆代表部署成功
# sftp默认上传的位置在资产的 /tmp 目录下
# windows拖拽上传的位置在资产的 Guacamole RDP上的 G 目录下
如果遇到guacamole终端没了,重启docker也无效的情况下
rm /opt/guacamole/key/*
重启docker容器
修改最下面图标
vim /opt/jumpserver/apps/templates/_footer.html