公司漏洞扫描发现安装的gitlab有漏洞,需要进行升级

系统是ubuntu24.04,漏洞扫描发现gitlab和ruby,postgresql都有漏洞,都需要进行升级

然后上网查询要怎么进行升级:

1.网上查了一通之后,发现其实升级gitlab就可以,其他两个在升级gitlab的时候会同步一起进行升级。

升级之前的准备工作:

1.查看当前gitlab的版本信息

确定gitlab是是企业版还是社区免费版(由于之前的gitlab不是我安装的)

sudo gitlab-rake gitlab:env:info

运行这条命令又报错:“chpst: fatal: unable to get password/group file entry: file does not exist”

解决办法:

1.检查系统核心文件权限

 ls -la /etc/passwd /etc/group /etc/shadow

前两个文件应为 -rw-r--r-- 权限,且所有者为 root:root。如果权限或所有者异常(例如变成了 git 用户),就需要修复。这里权限是正常的。

2.确认 GitLab 所需的 git 用户是否存在,若不存在则添加用户

id git

这里显示git用户不存在

添加用户

sudo useradd --system --comment 'GitLab' --create-home git

3.检查 GitLab 服务管理器, 子服务的 runsvdir 服务状态:

sudo systemctl status gitlab-runsvdir

如果状态是 inactive (dead) 或 failed,请尝试启动它。服务状态我这里是active状态是符合的

解决之后,再次查看版本信息为17.5.2-ee(ee是企业版,ce是社区)

2.确定升级计划

由于是从17.x升级到18.x,涉及这种大版本升级,需要进行阶梯升级

由于我们是从17.5.x开始,需要先升级到17.x的最新版本,然后升级到18.0.x,再升级到18.3.x或18.4.x或18.5.x。

3.备份

 sudo gitlab-rake gitlab:backup:create

备份如果没有报错,说明备份成功了。

备份日志中明确警告了:gitlab.rb 和 gitlab-secrets.json 这两个包含所有敏感配置和密钥的文件没有包含在自动备份中! 执行下面两条指令进行备份

sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak
sudo cp /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json.bak

备份确认

sudo ls -lth /var/opt/gitlab/backups/

确认后就可以执行升级了。

执行升级

1.从17.5.x升级到17.8.x

# 1. 更新软件包列表
sudo apt update

# 2. 安装目标版本 (例如 17.10.0)
sudo apt install gitlab-ee=17.10.0-ee.0

# 3. 重新配置(必须执行)
sudo gitlab-ctl reconfigure

# 4. 重启服务
sudo gitlab-ctl restart

从17.5.x直接升级17.10.x提示报错,要先升级到17.8.x才行,所以改成sudo apt install gitlab-ee=17.8.7-ee.0

如果过程中下载速度太慢,可以换成国内(清华)的镜像源:

# 1. 编辑源列表文件,替换为清华镜像
sudo sed -i 's|https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu|https://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/ubuntu|g' /etc/apt/sources.list.d/gitlab_gitlab-ee.list

# 2. 更新软件包列表(从新源获取索引)
sudo apt update

# 3. 安装目标版本 (例如 17.8.7)
sudo apt install gitlab-ee=17.8.7-ee.0

# 4. 重新配置(必须执行)
sudo gitlab-ctl reconfigure

# 5. 重启服务
sudo gitlab-ctl restart

升级完成之后,检查版本号是否成功,我这里版本升级成功了。

sudo gitlab-rake gitlab:env:info | grep Version

也可以查询账号(root)的默认密码,然后登录到web界面验证是否安装成功。

sudo cat /etc/gitlab/initial_root_password

2.从17.8.x升级到17.10.0

sudo apt install gitlab-ee=17.10.0-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version

发现又被坑了,17.x最新版是17.11.7,制定升级计划时,一定要查清楚大版本的最终版本,升级到这个版本之后,再升级大版本。所以还要升级一次17.11.7

sudo apt-cache policy gitlab-ee

3.从17.10.0升级到17.11.7

sudo apt install gitlab-ee=18.11.7-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version

4.从17.11.7升级到18.0.6

sudo apt install gitlab-ee=18.0.6-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version

5.从18.0.6升级到18.8.2--报错,无法直接升级过去

sudo apt install gitlab-ee=18.8.2-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version

从18.0.6直接升级到18.8.2的时候又报错了,提示只能先升级到18.5.x

5.从18.0.6升级到18.5.5--报错,无法直接升级过去

sudo apt install gitlab-ee=18.5.5-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version

从18.0.6直接升级到18.5.5的时候又报错了,提示只能先升级到18.2.x,真是服了不能一次提示到位。

6.从18.0.6升级到18.2.8

sudo apt install gitlab-ee=18.2.8-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version

升到18.2.8之后,再去升级18.5.5(由于之前已经提前下载好了,这次升级就很快),再执行一遍升级18.5.5的步骤

sudo apt install gitlab-ee=18.5.5-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version

升级升级到18.5.5之后,重新进行病毒扫描发现,postgresql还有漏洞:CVE-2025-12817,提示还需要升级postgresql,所以只能继续往下升级gitlab。

sudo apt install gitlab-ee=18.8.2-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version

最终升级到18.5.5之后,检查确认版本没错,再登录web界面查看是否可以成功打开。

升级之后重置密码

 1.检查初始密码文件(大部分时候这个密码无效)

sudo cat /etc/gitlab/initial_root_password

如果文件存在,输出中的 Password: 后面就是初始密码。使用 用户名 root 和此密码登录。

2.重置root密码

sudo gitlab-rake "gitlab:password:reset[root]"

提示Successfully就说明成功了。现在可以去web界面用设置的密码登陆了

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐