jumpserver v2.5.3 升级到 v2.6.1

最近我用于内部考试服务运维的开源堡垒机jumpserver迎来了一个大版本更新,无法通过自动更新完成,需要进行手动的升级。

这里记录一下升级过程,备忘。

一、数据迁移

首先官方文档里说明是数据迁移,而不是升级。需要先停止jumpserver的服务。官方提供了4种方法,这里我用习惯的setuptools脚本执行,因为小版本的更新也是用它。

cd /opt/setuptools

./jmsctl.sh stop

systemctl disable jms_core

mv /opt/jumpserver /opt/jumpserver_bak

命令如上,分别是停止服务,停用core,把现在的安装目录重命名为备份。

二、备份数据库

# 从 jumpserver/config.yml

获取数据库信息

DB_HOST: 127.0.0.1 # 数据库服务器 IP

DB_PORT: 3306 # 数据库服务器 端口

DB_USER: jumpserver # 连接数据库的用户

DB_PASSWORD: ****** # 连接数据库用户的密码

DB_NAME: jumpserver # JumpServer 使用的数据库

 

# mysqldump -h<DB_HOST> -P<DB_PORT> -u<DB_USER> -p<DB_PASSWORD> <DB_NAME> > /opt/<DB_NAME>.sql

说明:如果运行mysqldump命令后,报“ 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces”错误,是 jumpserver 用户没有process权限导致的。

解决办法是:先进入mysql,执行 grant process on *.* to jumpserver@'127.0.0.1';  后,再次执行mysqldump命令备份,虽然有其它告警信息,但数据库可以完成备份。

最后,校验备份数据库字符集:

if grep -q 'COLLATE=utf8_bin' /opt/jumpserver.sql; then

echo "备份数据库字符集正确";

else cp /opt/jumpserver.sql /opt/jumpserver_bak.sql sed -i 's@CHARSET=utf8;@CHARSET=utf8 COLLATE=utf8_bin;@' /opt/jumpserver.sql

fi

 

三、下载 jumpserver-install

cd /opt

yum -y install wget wget https://github.com/jumpserver/installer/releases/download/v2.6.1/jumpserver-installer-v2.6.1.tar.gz

tar -xf jumpserver-installer-v2.6.1.tar.gz

cd jumpserver-installer-v2.6.1

安装前,修改配置文件,确保新系统和原来的系统加密KEY一致。

vi config-example.txt

从老版本的config.yml中获取原来的KEY和TOKEN的值,填入配置文件

# 修改下面选项, 其他保持默认 ### 注意: SECRET_KEY 与旧版本不一致, 加密的数据将无法解密

# Core 配置 ### 启动后不能再修改,否则密码等等信息无法解密

SECRET_KEY= # 从旧版本的配置文件获取后填入 (*)

BOOTSTRAP_TOKEN= # 从旧版本的配置文件获取后填入 (*)

写入Core镜像地址

export DOCKER_IMAGE_PREFIX=docker.mirrors.ustc.edu.cn

开始安装

./jmsctl.sh install

后面按提示安装,根据你的具体情况选择,如无特殊要求直接回车,采用默认。

在“ 3. 启动Docker Docker 版本发生改变 docker配置文件发生变化,是否要重启 (y/n) (默认为y): y 完成 ”,这一步后,开始下载安装升级对应的套件,请耐心等待。

全部完成后,会显示jumpserver的相关说明。

可以用 ./jmsctl.sh start 尝试启动jumpserver看一下是否成功。如果一切正常的话,./jmsctl.sh stop停服务,恢复原来的数据。

恢复数据库

./jmsctl.sh restore_db /opt/jumpserver.sql

恢复原目录数据

mv /opt/jumpserver_bak/data /opt/jumpserver/core/

至此全部完成!

 

PS:更新完成后,发现无法使用终端,SSH和RDP都没有反映。排查后发现在会话管理的终端管理里,Gua和KoK0都是离线状态。

重启jumpserver后问题依旧,查看官方文档发现是我在安全设置里把终端注册关闭了,导致新的终端无法注册上来。允许注册后,KoKo正常,但Gua还是不行。

再次查看官方文档,发现需要重新注册,执行如下命令后,全部功能恢复。至此真正全部升级完成!!

rm -f /opt/jumpserver/guacamole/data/keys/jumpserver.key

docker restart jms_guacamole

未经允许不得转载:生于七零年代 » jumpserver v2.5.3 升级到 v2.6.1

赞 (85) 打赏

评论

6+5=

觉得文章有用就打赏一下文章作者

微信扫一扫打赏