针对 Kali / Debian 环境的 一键修复 Redis + OpenVAS 的 Shell 脚本,会处理目录权限、日志权限、创建 socket 目录,并启动服务。
#!/bin/bash
# fix_gvm_redis.sh
# 一键修复 Redis + OpenVAS 权限和启动问题
set -e
echo "[+] 停止现有 Redis 服务(如果在运行)..."
systemctl stop redis-server@redis-openvas.service 2>/dev/null || true
echo "[+] 创建必要目录..."
mkdir -p /var/run/redis-openvas
mkdir -p /var/log/redis
mkdir -p /var/lib/redis
echo "[+] 设置目录权限..."
chown -R redis:redis /var/run/redis-openvas
chown -R redis:redis /var/log/redis
chown -R redis:redis /var/lib/redis
chmod 770 /var/run/redis-openvas
chmod 770 /var/log/redis
chmod 770 /var/lib/redis
echo "[+] 确认 Redis 配置文件存在..."
if [ ! -f /etc/redis/redis-openvas.conf ]; then
echo "Redis 配置文件不存在,尝试复制默认配置..."
cp /etc/redis/redis.conf /etc/redis/redis-openvas.conf
echo "bind 127.0.0.1" >> /etc/redis/redis-openvas.conf
echo "port 0" >> /etc/redis/redis-openvas.conf
echo "unixsocket /var/run/redis-openvas/redis-server.sock" >> /etc/redis/redis-openvas.conf
echo "unixsocketperm 770" >> /etc/redis/redis-openvas.conf
echo "dir /var/lib/redis" >> /etc/redis/redis-openvas.conf
echo "logfile /var/log/redis/redis-openvas.log" >> /etc/redis/redis-openvas.conf
fi
echo "[+] 重新加载 systemd..."
systemctl daemon-reload
echo "[+] 启动 Redis 服务..."
systemctl start redis-server@redis-openvas.service
systemctl status redis-server@redis-openvas.service --no-pager
echo "[+] 启动 ospd-openvas 服务..."
systemctl restart ospd-openvas
systemctl status ospd-openvas --no-pager
echo "[+] 修复完成!请确认 gvm-check-setup 是否全部 OK"
✅ 使用方法:
-
将脚本保存,例如
/root/fix_gvm_redis.sh -
添加执行权限:
chmod +x /root/fix_gvm_redis.sh
-
执行:
sudo /root/fix_gvm_redis.sh
这样会一次性:
-
修复
/var/run/redis-openvas、/var/log/redis、/var/lib/redis权限 -
确保 Redis 配置文件存在
-
启动 Redis + OpenVAS 服务

重置密码
在 GVM(Greenbone Vulnerability Manager,gvmd)里,直接在数据库里修改密码需要注意:从 GVM 21.x 之后,用户密码都是经过 SHA256 哈希 存储的,而不是明文,所以直接写明文是行不通的。
假设你已经有 psql 访问 gvmd 数据库的权限,可以按下面步骤操作:
1️⃣ 进入 gvmd 数据库
sudo -u _gvm psql gvmd
2️⃣ 查看用户表结构
\d users
你会看到类似字段:
-
id -
name(用户名) -
password(SHA256 哈希后的密码) -
其他字段...
注意:GVM 25.x 后用户名字段是 name,不是 username。
3️⃣ 修改 admin 用户密码
假设要将密码改成 YourNewStrongPassword,执行:
UPDATE users
SET password = crypt('YourNewStrongPassword', gen_salt('bf'))
WHERE name = 'admin';
解释:
-
crypt(..., gen_salt('bf'))会生成 bcrypt 哈希(GVM 推荐方式) -
name = 'admin'确保只修改 admin 用户
4️⃣ 刷新权限/退出
\q
然后重启 gvmd:
sudo systemctl start postgresql
sudo systemctl restart gvmd
sudo systemctl status ospd-openvas
sudo systemctl status gsad
现在你可以用新密码登录 GVM Web 界面了。