Redis拒绝连接的原因与解决方式

Redis拒绝连接的原因与解决方式

在某些情况下,当尝试从外部计算机连接到运行在保护模式下的Redis服务器时,您可能会遇到如下的错误信息:

plaintext 复制代码
Caused by: org.redisson.client.RedisException: DENIED Redis is running in protected mode because protected mode is enabled and no password is set for the default user. In this mode connections are only accepted from the loopback interface.

此错误表明Redis服务出于安全考虑,正处于保护模式(protected mode)下,并且没有为默认用户设置访问密码。在这种模式中,Redis仅允许来自本地回环地址(即localhost或127.0.0.1)的连接请求,从而拒绝了所有非本地主机发起的连接。

Redis保护模式是其内置的一种安全机制,旨在防止未授权用户通过网络访问Redis实例。尤其在生产环境中,如果Redis直接暴露在公网而无任何身份验证的情况下,这会带来严重的数据安全风险。

针对上述错误情况,有以下几种解决方案来允许外部计算机成功连接到Redis服务器:

  1. 临时禁用保护模式(不推荐在生产环境使用):

    • 登录运行Redis服务器的同一台主机。
    • 使用redis-cli命令行工具连接到本地Redis服务。
    • 执行命令 CONFIG SET protected-mode no 来暂时关闭保护模式。
    • 为了确保配置更改在Redis重启后仍然有效,执行 CONFIG REWRITE 命令以将当前配置写入配置文件。
  2. 永久性地在配置文件中禁用保护模式(强烈不推荐在生产环境使用):

    • 编辑Redis的配置文件(通常名为redis.conf),找到 protected-mode 配置项并将其值更改为 no。
    • 保存配置文件并退出编辑器。
    • 重启Redis服务,新的配置将在Redis启动时生效。
  3. 通过命令行参数启动Redis时禁用保护模式(仅限于测试场景) :

    如果是在测试环境中手动启动Redis服务器,可以在启动命令中添加 --protected-mode no 参数来启动Redis,这样它就不会启用保护模式。

  4. 推荐方案:为Redis设置认证密码:

    • 在Redis配置文件中加入一行 requirepass yourpassword,将 yourpassword 替换为一个强密码。
    • 保存配置文件并重启Redis服务,使新密码设置生效。
    • 当从外部客户端连接时,需要提供这个密码进行身份验证。

总之,在实际应用中,出于安全性考虑,建议采用最后一种方法,即为Redis设置密码而非彻底禁用保护模式。这将确保只有经过授权的客户端才能访问Redis实例,同时保留了保护模式提供的基本安全防护层。

相关推荐
牧瀬クリスだ14 小时前
Redis List实战:从队列到最新列表的高效应用
数据库·redis·list
码智社14 小时前
Redis生产环境高频踩坑总结(Java后端视角)
java·数据库·redis
正经教主14 小时前
【FDE系列】阶段2:Day 45(up详细版):综合实战 — Docker + Nginx + Git 完整部署与本周收官
人工智能·git·nginx·docker·fde
心.c14 小时前
从“加个缓存”到稳定上线:把 Redis 放回真实业务里
数据库·redis·ai·1024程序员节
miofly15 小时前
GitHub 日榜趋势速报 | 2026-10-29
开源·github
u1301301 天前
GitHub 热榜项目:日榜(2026-10-27)
人工智能·github
划破黑暗的第一缕曙光1 天前
[C++]:5.STL:string(2)
java·c++·redis
zroooo1 天前
GitHub Flow
github
粥里有勺糖1 天前
视野修炼-技术周刊第137期 | 编程已经面目全非
前端·github·ai编程
miofly1 天前
GitHub 今日推荐|rea:用 MCP 把反编译器和 AI agent 接到一起的逆向工具
typescript·开源·github