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

相关推荐
摇滚侠17 小时前
零基础小白自学 Git_Github 教程,GitHub Action 基础概念,笔记22
笔记·git·github
菜萝卜子17 小时前
k8s 启动一个redis
redis·容器·kubernetes
追逐时光者18 小时前
一个免费且实用的 GitHub 工具,可将 GitHub 的 README 翻译成多种语言!
github
serendipity_hky18 小时前
互联网大厂Java面试故事:核心技术栈与场景化业务问题实战解析
java·spring boot·redis·elasticsearch·微服务·消息队列·内容社区
Wilson Chen20 小时前
深入解剖 Redis Cluster:从 16384 分片原理到故障自动转移的硬核实战
数据库·redis·缓存
云半S一20 小时前
春招准备之Redis篇
数据库·经验分享·redis·笔记·缓存
哈哈哈笑什么21 小时前
蜜雪冰城1分钱奶茶秒杀活动下,使用分片锁替代分布式锁去做秒杀系统
redis·分布式·后端
雨中飘荡的记忆21 小时前
Redis_实战指南
数据库·redis·缓存
victory043121 小时前
git clone只克隆小文件 无法克隆大文件解决办法
git
逛逛GitHub21 小时前
发现 3 个牛哄哄 AI 的 GitHub 开源项目,速速收藏。
github