一、使用jumpserver的背景
两年前,为了统一管理本地和阿里云服务器资产,边学边练的选择了jumpserver堡垒机作为公司服务器运维管理工具,原因很简单:第一它是开源免费的,尽管它有企业版,但是免费的已经足够满足任何小公司了,哪怕是等保过级都没问题,第二是因为它的架构是python+Django+各种组件,恰巧呢本人也是python学者,所以部署起来也比较得心应手。(主要是兼职了公司运维,涨工资总要有点成绩!)
二、jumpserver2.5.0版本
一开始呢,版本不低,页面呢,也相当清新脱俗,主要是很省心,一键部署到位。
特色优势⚓︎
开源:零门槛,线上快速获取和安装;
分布式:轻松支持大规模并发访问;
无插件:仅需浏览器,极致的 Web Terminal 使用体验;
多云支持:一套系统,同时管理不同云上面的资产;
云端存储:审计录像云端存储,永不丢失;
多租户:一套系统,多个子公司和部门同时使用;
多应用支持:数据库,Windows远程应用,Kubernetes。
2.1、升级jumpserver2.9.2
在安装目录setuptools下执行:./jmsctl.sh upgrade v2.9.2 即可完成升级
然而,我更喜欢的是scripts目录下的脚本,里面有一键部署py3、mysql、redis、nginx等环境shell脚本;简直是大爱了,因为这些脚本是可以带走用到任何公司、任何服务器的,一键部署真的很省心(就是偷懒罢了,手动狗头~)
三、大厦断电
都怪自己作妖,把原来scripts目录下的脚本洗劫一空,导致大厦断电后,服务无法重启,jumpserver堡垒机就此瘫痪,不得已需要重新部署,当然可以选择手动和自动部署,目前自动会默认最新版本,而手动安装步骤略显繁琐,毅然决然的选择一键部署,然后这次自动安装还遇到了不少问题,多花费了3天时间来解决https问题。
- 问题一:访问域名,很久都没有加载出来,在后台部署生产时,想看日志直接泪奔 - - !
这个很大可能是jumpserver部署内部出现错误,然后再是本地使用了natapp域名穿透问题,没有很好的调试通过;
- 问题二:访问服务器,提示websocket问题;文档上说是ws配置问题
3.1、解决nginx/https问题,还需要从文档入手
- 如果需要自定义 Nginx 配置文件, 可以参考此处
# Todo: May be can auto discovery
upstream http_server {
# sticky name=jms_route; # 这个不懂什么意思,但是要想访问https就需要注释掉,因为启动jms_lb容器直接报错
server web:80;
# server HOST2:80; # 多节点
}
server {
listen 80;
server_name demo.jumpserver.org; # 自行修改成你自己的域名
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name demo.jumpserver.org; # 自行修改成你自己的域名
server_tokens off;
ssl_certificate cert/server.crt; # 修改 server.crt 为你的证书 (pem, crt 格式均可), 不要改路径 certs/
ssl_certificate_key cert/server.key; # 修改 server.crt 为你的证书密钥文件, 不要改路径 certs/
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=63072000" always;
client_max_body_size 5000m; # 上传文件大小限制
location / {
proxy_pass http://http_server;
proxy_buffering off;
proxy_request_buffering off;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_ignore_client_abort on;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 6000;
}
}
- 这里需要特别提醒,在生成jumpserver配置的时候,尤其是启动了https,那么/opt/jumpserver/config/nginx/下的conf配置文件是映射到容器jms_lb的/etc/nginx/conf.d目录下的default.conf;所以需要停止jms_lb容器,再修改宿主机的lb配置,重启jms_lb容器就好了。
四、终于是把服务器给搭建起来了
从一开始反复的卸载部署jumpserver堡垒机,始终无法正确的在外部使用https访问堡垒机,然后一直纠结nginx,然而最大的问题就是jumpserver捆绑了ng,其实就是jms_web同一个镜像起了两个容器,其中还有core这个核心组件;不过话说回来,这次经验教训,不要心浮气躁,是问题最终都会得到解决,但是也不要忽略别人的帮助文档,不然凭自己一个人想要吃透一个相对较大的项目,还是很费力的。
五、那原来的数据怎么办呢?
尽管原来的数据都留下来了,但实在无法与新版本的数据结构相融合;所以只能在新环境重新手动添加了,好在有了第一次的经验,而且服务器也不算很多,维护起来也很方便,所以整体耗时不大。只是有点对不起jumpserver的技术支持同学了。