3、核心工具安装:JumpServer、Docker与Nginx
好,咱们进入实操环节。这一章要搞定三样东西:JumpServer堡垒机、Docker与Docker-Compose、还有Nginx反向代理。这三样装好了,远程运维平台的骨架就算立起来了。
我个人习惯先把Docker搞定,因为后面JumpServer也是跑在容器里的。你想想看,用容器部署多省心,环境隔离、一键启停,比裸机装一堆依赖舒服多了。
3.1 安装Docker与Docker-Compose
先装Docker。我推荐用官方脚本一键安装,省事。不过要注意,生产环境最好指定版本,别用latest。
# 安装Docker(CentOS 7/8 通用)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh --version 20.10.21
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
docker --version
sudo usermod -aG docker $USER,然后退出重登。
接下来装Docker-Compose。这东西说白了就是用来编排多个容器的。比如JumpServer需要MySQL、Redis、Core、Koko好几个容器,用Compose一个文件全搞定。
# 下载Docker-Compose(v2.12.2 稳定版)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证
docker-compose --version
3.2 安装并配置JumpServer堡垒机
JumpServer现在官方推荐用All-in-One的部署方式,基于Docker-Compose。我个人觉得这种方式最省心,升级也方便。
先拉取官方部署脚本:
# 创建目录
mkdir -p /opt/jumpserver
cd /opt/jumpserver
# 下载官方部署包(v3.10.0 为例)
wget https://github.com/jumpserver/installer/releases/download/v3.10.0/jumpserver-installer-v3.10.0.tar.gz
tar -xf jumpserver-installer-v3.10.0.tar.gz
cd jumpserver-installer-v3.10.0
然后执行安装。这里有个坑——配置文件。安装脚本会生成一个config.txt,里面有很多默认参数。我建议你手动改一下:
- DOMAINS:改成你的实际域名或IP,比如
jump.yourcompany.com - SECRET_KEY:生成一个随机字符串,别用默认的
- DB_PASSWORD:数据库密码,设一个强密码
# 开始安装
./jmsctl.sh install
# 安装完成后启动
./jmsctl.sh start
# 查看状态
./jmsctl.sh status
docker-compose.yml中的MySQL内存限制。
安装成功后,浏览器访问 http://你的IP:8080,默认账号 admin,密码 admin。第一次登录会强制修改密码。
3.3 部署Nginx反向代理
为什么需要Nginx?说白了,你不能让用户直接访问JumpServer的8080端口吧?不安全,也不优雅。Nginx做反向代理,统一入口,还能加SSL证书。
我习惯用Docker部署Nginx,和JumpServer保持一致的容器化风格。
# 拉取Nginx镜像
docker pull nginx:1.24-alpine
# 创建配置目录
mkdir -p /opt/nginx/conf.d
mkdir -p /opt/nginx/ssl
然后写配置文件。这里我直接给一个生产可用的例子:
# /opt/nginx/conf.d/jumpserver.conf
server {
listen 80;
server_name jump.yourcompany.com;
# 强制跳转HTTPS(如果有证书)
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name jump.yourcompany.com;
ssl_certificate /etc/nginx/ssl/yourcert.pem;
ssl_certificate_key /etc/nginx/ssl/yourkey.key;
# 安全头
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
location / {
proxy_pass http://你的JumpServerIP:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket支持(JumpServer的终端功能需要)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
启动Nginx容器:
docker run -d --name nginx-proxy \
--restart always \
-p 80:80 -p 443:443 \
-v /opt/nginx/conf.d:/etc/nginx/conf.d \
-v /opt/nginx/ssl:/etc/nginx/ssl \
nginx:1.24-alpine
certbot配合Nginx自动续签,省心。
3.4 验证整体链路
装完别急着走,咱们验证一下:
- 浏览器访问
https://jump.yourcompany.com,能打开JumpServer登录页 - 登录后创建一个测试用户,分配一台服务器
- 用Web终端连接测试,看WebSocket是否正常
- 检查Nginx日志:
docker logs nginx-proxy,看有没有报错
用户 → Nginx(443) → JumpServer(8080) → 目标服务器(22/3389)。每一层都要通,任何一个环节断了,运维平台就用不了。
嗯,到这里核心工具就装完了。Docker提供了运行环境,Compose管理了多容器,JumpServer负责审计和权限控制,Nginx做了统一入口。这套组合拳打下来,远程运维平台的基础设施就稳了。
我记得第一次给客户部署时,光Nginx的WebSocket配置就折腾了半天。后来发现是忘了加proxy_set_header Upgrade那几行。你如果遇到终端连不上,优先检查这里。