Redis保护模式怎么查啊,打开了没,咋确认这个状态呢?
- 问答
- 2026-01-23 21:13:12
- 2
要搞清楚Redis的保护模式有没有打开,以及怎么去查看和确认它的状态,其实并不复杂,你不用把它想得太技术化,我们可以一步一步来,保护模式是Redis为了安全着想,默认开启的一个“安全卫士”,当这个卫士在岗时,它会阻止那些从外部网络发来的、并且没有密码认证的连接请求,防止任何人随便访问你的Redis数据库,这对于防止数据库被黑客随意篡改或窃取数据非常重要。
最直接、最权威的查看方法,就是去问Redis自己。
你需要连接到你的Redis服务器,怎么连接呢?这取决于你的Redis安装在哪里。
- 如果Redis就在你自己的电脑上(本地环境):打开命令行工具(比如Windows的CMD或PowerShell,Mac的Terminal),然后输入命令
redis-cli并回车,这会启动Redis的命令行客户端,连接到本地的Redis服务。 - 如果Redis在另一台服务器上(远程服务器):你需要在
redis-cli命令后面指定服务器地址和端口,redis-cli -h 你的服务器IP -p 6379。-h后面跟IP地址,-p后面跟端口号(Redis默认端口是6379)。
连接成功之后,你会看到命令提示符变成 0.0.1:6379> 这样的样式,这说明你现在可以对Redis下达指令了。
就是最关键的一步:查询保护模式的状态,请输入以下命令并回车:

CONFIG GET protected-mode
Redis会立刻给你回复,回复的内容通常是两行:
- 第一行是
"protected-mode",这表示你查询的配置项名称。 - 第二行是
"yes"或者"no"。这里的"yes"就表示保护模式是开启的,"no"则表示保护模式是关闭的。
这是最准确无误的确认方法,因为它直接读取了Redis服务器当前的配置,根据Redis官方文档的说明,在默认的配置下,protected-mode 这个配置参数的值直接决定了保护模式的开关(来源:Redis官方文档 CONFIG SET 命令说明)。
除了直接查配置,你还可以通过实际连接测试来“感受”保护模式是否在起作用。
这种方法更像是一次实战演练,你可以故意模拟一个“不安全”的访问场景,看看Redis会有什么反应,具体怎么做呢?

假设你的Redis服务器有一个公网IP(123.123.123.123),并且你没有为它设置访问密码(即 requirepass 配置项为空),你从另一个不同的网络(比如你家的电脑,而不是你服务器所在的机房网络)尝试用 redis-cli 去连接它:
redis-cli -h 123.123.123.123 -p 6379
如果保护模式是开启的(protected-mode 为 yes),并且你没有提供密码,那么连接可能会成功,但当你尝试执行任何命令(比如最简单的 ping 命令)时,Redis会给你返回一个错误信息,大致内容是:
DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface.
这段话的意思就是:“访问被拒绝!Redis正处于保护模式,因为保护模式已开启,而且你没有指定绑定地址,也没有设置密码,在这种模式下,只接受来自本机(localhost)的连接。”(来源:Redis官方文档 安全章节中关于保护模式的描述)
这个错误信息明确地告诉你,保护模式这个“安全卫士”正在尽职尽责地工作,它拦住了你这次来自外部的、未经验证的访问,反过来,如果你能从外部网络顺利连接并执行命令,那几乎可以肯定保护模式是关闭的,或者你已经配置了密码并且认证成功了。

什么情况下保护模式会失效呢?
了解这个也能帮你更好地判断状态,根据Redis的设计,保护模式在以下任何一种情况下会自动“放行”外部连接,也就是说,在这些情况下,即使 protected-mode 设置为 yes,它也不会拦截:
- 你显式地设置了密码:通过
requirepass配置项给Redis设置了密码,并且客户端在连接时提供了正确的密码。 - 你显式地绑定了网络接口:通过
bind配置项指定了确切的IP地址(比如服务器的公网IP),而不是默认的只绑定本地回环地址 127.0.0.1。
当你检查保护模式状态时,也需要结合这两点来综合判断,你不能仅仅因为 CONFIG GET protected-mode 返回了 yes,就断定外部绝对访问不了,因为万一你设置了密码并且人家知道密码,还是可以连上的。
确认Redis保护模式状态的最佳实践是:
- 首选方法:使用
redis-cli连接Redis,执行CONFIG GET protected-mode命令,直接查看返回结果是yes还是no。 - 辅助验证:在确保安全的前提下(比如在测试环境),可以尝试从外部网络进行未认证的连接测试,观察是否收到保护模式的拒绝错误信息。
- 综合判断:结合检查是否设置了密码(
CONFIG GET requirepass)和绑定地址(CONFIG GET bind),来全面评估Redis的实际受保护情况。
保护模式是一个重要的安全底线,在生产环境中,通常建议要么保持其开启并配合密码认证使用,要么通过精细的网络配置(如防火墙)来限制访问,千万不要让Redis在无任何保护的情况下暴露在公网上。
本文由酒紫萱于2026-01-23发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/84681.html
