CentOS 7.5部署JumpServer堡垒机全流程指南
1. CentOS 7.5 部署 JumpServer 全流程指南
作为一款开源的堡垒机系统,JumpServer 在企业级运维安全领域扮演着重要角色。最近在客户现场完成了一个基于 CentOS 7.5 的 JumpServer 部署项目,现将完整实施过程整理成技术笔记。本文不仅包含标准安装步骤,还会分享实际环境中的调优经验和避坑指南。
1.1 环境准备与基础配置
首先确保系统版本为 CentOS 7.5 最小化安装,并完成基础环境配置:
# 检查系统版本 cat /etc/redhat-release # CentOS Linux release 7.5.1804 (Core) # 关闭 SELinux(生产环境需根据安全策略调整) setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 清空防火墙规则(建议后续配置具体放行规则) iptables -F && iptables -X systemctl stop firewalld systemctl disable firewalld # 安装基础工具包 yum install -y wget curl tar gettext iptables python注意:如果使用华为云等国内云平台,建议先配置国内 yum 源加速软件安装
1.2 数据库环境部署
JumpServer 依赖 MySQL 和 Redis,以下是独立部署方案:
MySQL 5.7 安装配置:
# 添加 MySQL 官方源 rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm yum install -y mysql-community-server # 启动服务并设置开机自启 systemctl start mysqld systemctl enable mysqld # 获取临时密码并修改 temp_pass=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}') mysql_secure_installation -p"$temp_pass" # 创建专用数据库 mysql -uroot -p -e "CREATE DATABASE jumpserver DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"Redis 5.x 安装配置:
yum install -y epel-release yum install -y redis # 修改关键配置 sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /etc/redis.conf echo "requirepass YourStrongRedisPass" >> /etc/redis.conf systemctl start redis systemctl enable redis2. JumpServer 核心组件部署
2.1 获取安装包与准备
推荐使用官方提供的快速安装脚本:
cd /opt curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.28.8/quick_start.sh | bash安装程序会自动完成以下工作:
- 创建 /opt/jumpserver-installer-v2.28.8 目录
- 下载必要的 Docker 镜像
- 生成默认配置文件模板
2.2 关键配置调整
编辑配置文件前需要生成必要的安全密钥:
# 生成随机 SECRET_KEY SECRET_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 50) echo $SECRET_KEY # 生成 BOOTSTRAP_TOKEN BOOTSTRAP_TOKEN=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 16) echo $BOOTSTRAP_TOKEN修改配置文件 /opt/jumpserver-installer-v2.28.8/config-example.txt:
## Docker 镜像配置 DOCKER_IMAGE_MIRROR=1 # 启用国内镜像加速 ## 安装配置 VOLUME_DIR=/data/jumpserver # 建议使用独立数据盘 SECRET_KEY=您生成的SECRET_KEY BOOTSTRAP_TOKEN=您生成的BOOTSTRAP_TOKEN LOG_LEVEL=ERROR ## 数据库配置(指向之前部署的实例) DB_HOST=127.0.0.1 DB_PORT=3306 DB_USER=root DB_PASSWORD=您的数据库密码 DB_NAME=jumpserver ## Redis 配置 REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_PASSWORD=YourStrongRedisPass ## 网络配置 DOCKER_SUBNET=192.168.250.0/24 HTTP_PORT=8080 # 避免与现有服务冲突 SSH_PORT=2222 RDP_PORT=33892.3 安装与启动
执行安装脚本并启动服务:
cd /opt/jumpserver-installer-v2.28.8 ./jmsctl.sh install ./jmsctl.sh start启动成功后可以通过以下命令检查服务状态:
docker ps # 应看到 core、koko、lion 等容器正常运行 netstat -tlnp # 检查端口监听情况3. 系统初始化与优化配置
3.1 管理员账户初始化
访问 http://服务器IP:8080 完成首次登录配置:
- 设置管理员账号(建议不要使用 admin 作为用户名)
- 配置邮件服务(用于通知和密码重置)
- 设置系统名称等基本信息
3.2 性能调优建议
根据服务器配置调整 /opt/jumpserver/config/core.yml:
# 会话设置 SESSION_COOKIE_AGE: 86400 # 会话有效期(秒) SESSION_EXPIRE_AT_BROWSER_CLOSE: false # 资源限制 ASSET_TASK_MAX_LIMIT: 20 # 并发任务数 TERMINAL_MAX_TASK: 10 # 终端最大任务数Redis 优化配置(/etc/redis.conf):
maxmemory 2gb maxmemory-policy allkeys-lru timeout 300 tcp-keepalive 604. 常见问题排查指南
4.1 容器启动失败排查
现象:docker ps 显示容器不断重启
解决步骤:
# 查看容器日志 docker logs -f jms_core # 常见错误1:数据库连接失败 # 检查 config.txt 中的 DB_* 配置是否正确 # 测试数据库连通性: mysql -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASSWORD -e "USE $DB_NAME;" # 常见错误2:Redis 连接失败 redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD PING4.2 Web 访问异常处理
现象:页面加载缓慢或部分功能异常
排查方法:
- 检查浏览器控制台错误(F12)
- 查看 Nginx 访问日志:
docker exec jms_web tail -f /var/log/nginx/access.log - 调整 Nginx 客户端 body 大小限制:
CLIENT_MAX_BODY_SIZE=1024m # 在 config.txt 中修改
4.3 SSH 连接问题
现象:通过 JumpServer 连接资产失败
排查流程:
- 检查 Core 服务是否正常:
curl http://localhost:8080/api/health/ - 验证 Koko 组件状态:
docker exec jms_koko netstat -antp | grep 5000 - 检查资产网络连通性:
docker exec jms_koko ping 目标资产IP
5. 生产环境增强建议
5.1 安全加固措施
HTTPS 配置:
# 在 config.txt 中启用 HTTPS_PORT=443 SERVER_NAME=your.domain.com SSL_CERTIFICATE=/path/to/cert.pem SSL_CERTIFICATE_KEY=/path/to/key.pem定期备份策略:
# 数据库备份 mysqldump -uroot -p jumpserver > /backup/jumpserver_$(date +%F).sql # 配置文件备份 tar czf /backup/jumpserver_config_$(date +%F).tgz /opt/jumpserver/config
5.2 高可用部署方案
对于关键业务环境,建议采用以下架构:
- 前端:Nginx 负载均衡(多节点)
- 核心服务:Docker Swarm/Kubernetes 集群
- 数据库:MySQL 主从复制
- 缓存:Redis Sentinel 集群
5.3 监控集成
推荐配置 Prometheus 监控指标:
- 启用 JumpServer 的 /metrics 端点
- 监控关键指标:
- 活跃会话数
- 命令执行频率
- 资源使用率
- 异常登录尝试
通过以上完整实施方案,我们成功在 CentOS 7.5 上部署了稳定运行的 JumpServer 堡垒机系统。实际部署中遇到的几个关键点值得注意:数据库连接池的合理配置、会话超时时间的业务适配、以及网络策略的精细控制。这些经验对于其他类似项目的实施具有重要参考价值。
