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实例,同时保留了保护模式提供的基本安全防护层。

相关推荐
黑客思维者21 小时前
Python大规模数据处理OOM突围:从迭代器原理到TB级文件实战优化
开发语言·python·github·迭代器·oom
草梅友仁1 天前
草梅 Auth 1.11.1 版本发布与 AI 辅助代码重构实践 | 2025 年第 49 周草梅周报
开源·github·ai编程
may_一一1 天前
docker安装的redis状态一直是restarting
java·redis·docker
ChinaRainbowSea1 天前
github 仓库主页美化定制
java·后端·github
粥里有勺糖1 天前
视野修炼-技术周刊第128期 | Bun 被收购
前端·javascript·github
熊猫钓鱼>_>1 天前
GitHub Actions CI/CD流水线实战指南
ci/cd·github
卿雪1 天前
Redis 线程模型:Redis为什么这么快?Redis为什么引入多线程?
java·数据库·redis·sql·mysql·缓存·golang
爬山算法1 天前
Redis(167)如何使用Redis实现分布式缓存?
redis·分布式·缓存
旅之灵夫1 天前
【GitHub项目推荐--Agent Rules:AI编码助手的规则引擎与知识库系统】
github
@YDWLCloud1 天前
用腾讯云国际版搭建全球加速架构:5 分钟实现多地访问提速
服务器·架构·云计算·github·腾讯云