总体介绍
欢迎来到 Jumpserver 文档。
Jumpserver 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统。
Jumpserver 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好。
Jumpserver 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制。
Jumpserver 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。
改变世界, 从一点点开始。
组件说明
Jumpserver 为管理后台, 管理员可以通过Web页面进行资产管理、用户管理、资产授权等操作
Coco 为 SSH Server 和 Web Terminal Server 。用户可以通过使用自己的账户登录 SSH 或者 Web Terminal 直接访问被授权的资产。不需要知道服务器的账户密码
Luna 为 Web Terminal Server 前端页面, 用户使用 Web Terminal 方式登录所需要的组件
Guacamole 为 Windows 组件, 用户可以通过 Web Terminal 来连接 Windows 资产 (暂时只能通过 Web Terminal 来访问)
端口说明
Protocol Server name Port Config File
TCP Jumpserver 8080 jumpserver/config.yml
TCP Coco 2222, 5000 coco/config.yml
TCP Guacamole 8081
TCP Db 3306
TCP Redis 6379
TCP Nginx 80
环境
[root@test-node-1 ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
第一步:准备 Python3 和 Python 虚拟环境
以后运行 Jumpserver 都要先运行以下 source 命令, 以下所有命令均在该虚拟环境中运行
## 安装依赖
yum -y install wget gcc epel-release git krb5-devel
## 安装 Python3.6
yum -y install python36 python36-devel
## 建立 Python 虚拟环境
## 因为 CentOS 7 自带的是 Python2, 而 Yum 等工具依赖原来的 Python2
## 为了不扰乱原来的环境我们来使用 Python 虚拟环境
cd /opt
python3.6 -m venv py3
source /opt/py3/bin/activate
第二步:安装 Jumpserver
1.下载或 Clone 项目
source /opt/py3/bin/activate
cd /opt/
git clone --depth=1 https://github.com/jumpserver/jumpserver.git
2.安装依赖 RPM 包
cd /opt/jumpserver/requirements
yum -y install $(cat rpm_requirements.txt)
3.安装 Python 库依赖
pip install --upgrade pip setuptools
pip install -r requirements.txt
## 如果下载速度很慢, 可以换国内源
pip install --upgrade pip setuptools -i https://mirrors.aliyun.com/pypi/simple/
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
4.安装 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke
yum -y install redis
systemctl enable redis
systemctl stop redis
systemctl start redis
systemctl status redis
5.安装 MySQL
## 1.安装MySQL
cat <<EOF >/etc/yum.repos.d/mysql-community.repo
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
EOF
yum install -y mysql-community-server
## 2.启动和初始化
systemctl start mysqld
systemctl status mysqld
systemctl enable mysqld
grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation
6.创建数据库 Jumpserver 并授权
mysql -uroot -pXiaoliu123!
create database jumpserver default charset 'utf8';
grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'Xiaoliu123!';
flush privileges;
select user, host from mysql.user;
show databases;
exit
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` # 生成随机SECRET_KEY
echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc
BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16` # 生成随机BOOTSTRAP_TOKEN
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: $DB_PASSWORD/g" /opt/jumpserver/config.yml
echo -e "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m"
echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m"
## 确认内容有没有错误
cat config.yml
8.运行 Jumpserver
cd /opt/jumpserver
## 后台运行使用 -d 参数./jms start all -d
# 新版本更新了运行脚本, 使用方式./jms start|stop|status all 后台运行请添加 -d 参数
./jms start all -d
第三步:安装 SSH Server 和 WebSocket Server: Coco
1.下载或 Clone 项目
cd /opt
source /opt/py3/bin/activate
git clone --depth=1 https://github.com/jumpserver/coco.git
2.安装依赖
cd /opt/coco/requirements
yum -y install $(cat rpm_requirements.txt)
pip install -r requirements.txt
## 如果下载速度很慢, 可以换国内源
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
3.修改配置文件并运行
cd /opt/coco
cp config_example.yml config.yml
sed -i "s/BOOTSTRAP_TOKEN: <PleasgeChangeSameWithJumpserver>/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/coco/config.yml
sed -i "s/# LOG_LEVEL: INFO/LOG_LEVEL: ERROR/g" /opt/coco/config.yml
cat config.yml
4.运行
## 后台运行使用 -d 参数./cocod start -d
## 新版本更新了运行脚本, 使用方式./cocod start|stop|status 后台运行请添加 -d 参数
./cocod start -d
第四步:安装 Web Terminal 前端: Luna
Luna 已改为纯前端, 需要 Nginx 来运行访问
访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包, 直接解压不需要编译
## 下载
cd /opt
wget https://github.com/jumpserver/luna/releases/download/1.4.10/luna.tar.gz
## 如果网络有问题导致下载无法完成可以使用下面地址
wget https://demo.jumpserver.org/download/luna/1.4.10/luna.tar.gz
## 解压
tar xf luna.tar.gz
chown -R root:root luna
第五步:配置 Nginx 整合各组件
1.安装 Nginx
## 安装依赖
yum install yum-utils
## 配置 YUM 源
cat <<\EOF >/etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF
## 安装 Nginx
yum makecache fast
yum install -y nginx
## 启动 Nginx
rm -rf /etc/nginx/conf.d/default.conf
systemctl enable nginx
systemctl stop nginx
systemctl start nginx
systemctl status nginx
2.准备配置文件 修改 /etc/nginx/conf.d/jumpserver.conf
cat <<\EOF >/etc/nginx/conf.d/jumpserver.conf
server {
listen 80; # 代理端口, 以后将通过此端口进行访问, 不再通过8080端口
# server_name demo.jumpserver.org; # 修改成你的域名或者注释掉
client_max_body_size 100m; # 录像及文件上传大小限制
location /luna/ {
try_files $uri / /index.html;
alias /opt/luna/; # luna 路径, 如果修改安装目录, 此处需要修改
}
location /media/ {
add_header Content-Encoding gzip;
root /opt/jumpserver/data/; # 录像位置, 如果修改安装目录, 此处需要修改
}
location /static/ {
root /opt/jumpserver/data/; # 静态资源, 如果修改安装目录, 此处需要修改
}
location /socket.io/ {
proxy_pass http://localhost:5000/socket.io/; # 如果coco安装在别的服务器, 请填写它的ip
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://localhost:5000/coco/; # 如果coco安装在别的服务器, 请填写它的ip
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://localhost:8081/; # 如果guacamole安装在别的服务器, 请填写它的ip
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://localhost:8080; # 如果jumpserver安装在别的服务器, 请填写它的ip
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
EOF
3.运行 Nginx
nginx -t # 确保配置没有问题, 有问题请先解决
# CentOS 7
systemctl stop nginx
systemctl start nginx
systemctl status nginx
systemctl enable nginx
第六步:开始使用 Jumpserver
检查应用是否已经正常运行
服务全部启动后, 访问 http://192.168.244.144, 访问nginx代理的端口, 不要再通过8080端口访问
默认账号: admin 密码: admin
到Jumpserver 会话管理-终端管理 检查 Coco Guacamole 等应用的注册。
测试连接
## 如果登录客户端是 macOS 或 Linux, 登录语法如下(密码: admin)
ssh -p2222 admin@192.168.244.144
sftp -P2222 admin@192.168.244.144
## 如果登录客户端是 Windows, Xshell Terminal 登录语法如下(密码: admin)
ssh admin@192.168.244.144 2222
sftp admin@192.168.244.144 2222
如果能登陆代表部署成功
sftp默认上传的位置在资产的 /tmp 目录下
windows拖拽上传的位置在资产的 Guacamole RDP上的 G 目录下
第七步:Systemd 管理自启
1.Jumpserver
cat <<\EOF >/usr/lib/systemd/system/jms.service
[Unit]
Description=jms
After=network.target mariadb.service redis.service
Wants=mariadb.service redis.service
[Service]
Type=forking
Environment="PATH=/opt/py3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
ExecStart=/opt/jumpserver/jms start all -d
ExecReload=
ExecStop=/opt/jumpserver/jms stop
[Install]
WantedBy=multi-user.target
EOF
2.Coco
cat <<\EOF >/usr/lib/systemd/system/coco.service
[Unit]
Description=coco
After=network.target jms.service
[Service]
Type=forking
PIDFile=/opt/coco/coco.pid
Environment="PATH=/opt/py3/bin"
ExecStart=/opt/coco/cocod start -d
ExecReload=
ExecStop=/opt/coco/cocod stop
[Install]
WantedBy=multi-user.target
EOF
3.开机自启设置
## 开机自动启动
systemctl enable jms
systemctl enable coco
## 启动
systemctl start jms
systemctl start coco
## 状态查看
systemctl status jms
systemctl status coco
## 停止
systemctl stop jms
systemctl stop coco
网友评论