04
2023
05
08:50:21

转: 记一次jumpserver爬坑经验,切记不要盲目自信



推荐点击下面图片,通过本站淘宝优惠价购买:

image.png

一、使用jumpserver的背景

两年前,为了统一管理本地和阿里云服务器资产,边学边练的选择了jumpserver堡垒机作为公司服务器运维管理工具,原因很简单:第一它是开源免费的,尽管它有企业版,但是免费的已经足够满足任何小公司了,哪怕是等保过级都没问题,第二是因为它的架构是python+Django+各种组件,恰巧呢本人也是python学者,所以部署起来也比较得心应手。


二、jumpserver2.5.0版本

一开始呢,版本不低,页面呢,也相当清新脱俗,主要是很省心,一键部署到位。


f416d902e6b60be572a305fd9d8f04b5_82e1516275d34107adbe35d4f997af8f.png


特色优势⚓︎

开源:零门槛,线上快速获取和安装;

分布式:轻松支持大规模并发访问;

无插件:仅需浏览器,极致的 Web Terminal 使用体验;

多云支持:一套系统,同时管理不同云上面的资产;

云端存储:审计录像云端存储,永不丢失;

多租户:一套系统,多个子公司和部门同时使用;

多应用支持:数据库,Windows远程应用,Kubernetes。


2.1、升级jumpserver2.9.2

在安装目录setuptools下执行:./jmsctl.sh upgrade v2.9.2 即可完成升级


7a5e1e7f6d73e3949c4af7dd6152071b_a7b2e55c327a4ba3a66e00b744c232ab.png

然而,我更喜欢的是scripts目录下的脚本,里面有一键部署py3、mysql、redis、nginx等环境shell脚本;简直是大爱了,因为这些脚本是可以带走用到任何公司、任何服务器的,一键部署真的很省心(就是偷懒罢了,手动狗头~)

然而,我更喜欢的是scripts目录下的脚本,里面有一键部署py3、mysql、redis、nginx等环境shell脚本;简直是大爱了,因为这些脚本是可以带走用到任何公司、任何服务器的,一键部署真的很省心(就是偷懒罢了,手动狗头~)

在这里插入图片描述


三、大厦断电

都怪自己作妖,把原来scripts目录下的脚本洗劫一空,导致大厦断电后,服务无法重启,jumpserver堡垒机就此瘫痪,不得已需要重新部署,当然可以选择手动和自动部署,目前自动会默认最新版本,而手动安装步骤略显繁琐,毅然决然的选择一键部署,然后这次自动安装还遇到了不少问题,多花费了3天时间来解决https问题。


问题一:访问域名,很久都没有加载出来,在后台部署生产时,想看日志直接泪奔 - - !

这个很大可能是jumpserver部署内部出现错误,然后再是本地使用了natapp域名穿透问题,没有很好的调试通过;

1

问题二:访问服务器,提示websocket问题;文档上说是ws配置问题

a9320a08c1c9e39d9050f10329966694_123a19035de1479c84696d38df42b5b1.png


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的技术支持同学了。



本文链接:http://www.hqyman.cn/post/4035.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:





休息一下,本站随机推荐观看栏目:


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您的IP地址是: