redis 6.0 主从复制不加密,requirepass 和 masterauth 仅提供明文口令认证,不涉及传输层加密;所有通信(含密码)以明文走 tcp,中间人可直接抓包;原生不支持 tls,需借助 stunnel、nginx stream 代理或内网隔离等外部手段实现链路加密。

Redis 6.0 主从复制本身不加密,requirepass 和 masterauth 只是明文口令认证,不是加密,更不是“全链路加密”——它们连传输层加密都不提供。
为什么 requirepass 和 masterauth 不能实现加密
这两个配置项仅在客户端连接或从节点连接主节点时,用于 AUTH 命令校验密码。所有通信(包括密码本身)仍以明文走 TCP,中间人可直接抓包看到 AUTH 命令和密码字符串。Redis 6.0 原生不支持 TLS,也没有内置加解密通道能力。
-
requirepass是主节点设置的访问口令,影响所有 client 连接(含 redis-cli、应用客户端) -
masterauth是从节点配置项,仅用于它连接主节点时发送 AUTH,不参与数据同步内容保护 - 即使两者配对成功,RDB 快照、PSYNC 流、命令传播全程无加密,敏感数据裸奔
真正需要加密时该怎么做
必须依赖外部手段补足传输层安全。常见可行路径只有两条:
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 用
stunnel或nginx stream在 Redis 上套一层 TLS 代理(主从两端都需配置,且注意端口映射与超时) - 将 Redis 部署在受控内网 + IP 白名单 + 网络策略(如 Kubernetes NetworkPolicy 或云安全组),避免暴露到公网
- 若用云托管 Redis(如阿里云 Tair、腾讯云 CRS),确认其是否启用 TLS 插件(非开源 Redis 原生功能)
注意:redis.conf 中的 tls-port、tls-cert-file 等参数是 Redis 6.2+ 才引入的,6.0 完全不识别——强行写入会被忽略且无日志提示。
配置 requirepass 和 masterauth 的实操要点
虽然不加密,但口令认证仍是基础防线,配错会导致从节点无法同步、应用连不上等静默失败。
- 主节点只设
requirepass foobar123,不要加masterauth(它只在从节点生效) - 从节点必须配
masterauth foobar123,且值要和主节点requirepass完全一致(区分大小写、空格) - 如果主节点启用了
requirepass,但从节点没配masterauth,日志里会出现Master does not allow writes, refusing to sync或反复断连 - 使用
redis-cli -a连接时,密码会出现在进程列表(ps aux可见),生产环境建议改用redis-cli -u redis://:pwd@host:port或配置~/.redisclirc
真正的链路加密不在 Redis 配置里,而在你的网络边界和基础设施选择上。别被“requirepass + masterauth = 安全”这种过时认知带偏——它们只是最基础的身份校验,连防误操作都勉强,更别说防窃听。










