在 Droplet 上安装 Redis 6.0 并开启密码认证,需通过包管理器或源码安装,修改配置文件设置 requirepass 参数,并限制网络绑定地址。
先说结论:适合 Ubuntu/Debian 系统,操作前备份配置文件,验收通过 redis-cli 认证连接。
- 适合:DigitalOcean Droplet 等 Linux 云服务器
- 先看:Redis 版本是否满足 6.0 特性需求
- 建议:配合防火墙限制端口访问
命令速用版
# 更新包索引
sudo apt update
# 安装 Redis
sudo apt install redis-server
# 编辑配置文件
sudo vim /etc/redis/redis.conf
# 重启服务
sudo systemctl restart redis-server
# 验证连接
redis-cli -a 'your_password' ping
为什么会这样
默认安装的 Redis 出于兼容性考虑,往往未开启密码认证且绑定本地地址。
直接暴露在公网且无密码保护的 Redis 实例极易被扫描利用,导致数据泄露或被植入挖矿程序。开启密码认证是基础安全加固手段,配合绑定本地回环地址可大幅降低风险。
分步处理
步骤 1:确认 Redis 版本
安装完成后执行 redis-server -v。如果显示版本低于 6.0 且必须使用 6.0 特性,需添加 Redis 官方 apt 源或编译安装。公开资料中没有看到可靠的量化数据表明 6.0 比 5.0 在普通场景下有显著性能差异,但 6.0 支持 ACL 和多线程 IO。
步骤 2:配置密码认证
打开配置文件 /etc/redis/redis.conf,搜索 requirepass。取消注释并设置强密码,例如 requirepass MyStrongPassword123!。保存退出。
步骤 3:限制网络访问
在同一配置文件中,找到 bind 指令。确保设置为 bind 127.0.0.1 ::1,禁止绑定 0.0.0.0。如果应用需要远程访问,必须配合防火墙放行特定 IP。
步骤 4:重启服务
执行 sudo systemctl restart redis-server 使配置生效。检查状态 sudo systemctl status redis-server 确保无报错。
怎么验证是否生效
使用不带密码命令连接应被拒绝。执行 redis-cli ping 应返回 (error) NOAUTH Authentication required.。
使用带密码命令连接应成功。执行 redis-cli -a 'your_password' ping 应返回 PONG。查看日志 /var/log/redis/redis-server.log 确认无异常启动报错。
常见坑
密码包含特殊字符:如果密码含有 # 或空格,在配置文件中可能需要引号包裹,或在命令行连接时使用单引号。
protected-mode 保护模式:如果未设置密码且绑定地址为 0.0.0.0,Redis 会启用保护模式拒绝外部连接。设置密码后该模式自动调整,但仍建议显式绑定内网 IP。
防火墙未配置:仅靠 Redis 配置不够,需在 Droplet 控制面板或系统内使用 UFW 关闭 6379 端口对外访问,除非确需公网访问。
常见问题
忘记 Redis 密码怎么办?
需修改配置文件重置。停止 Redis 服务,编辑 redis.conf 修改 requirepass 值,保存后重启服务。
可以在配置文件中明文存储密码吗?
可以,但建议权限限制。确保 redis.conf 文件权限为 640 或 600,仅 root 和 redis 用户可读。
Redis 6.0 的 ACL 和 requirepass 有什么区别?
requirepass 是全局单一密码,ACL 支持多用户和细粒度权限。简单场景 requirepass 足够,复杂权限控制建议用 ACL。
参考来源
- Redis 官方文档,Security 页面,https://redis.io/docs/management/security/
- Redis 配置文件示例,redis.conf,https://github.com/redis/redis/blob/unstable/redis.conf