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

相关推荐
BestOrNothing_201516 分钟前
Git 团队开发冲突合并全流程:本地是否改动 + 远端是否更新,如何正确同步并合并(同分支/不同分支下的几种场景)
git·分支管理·git pull·git merge·分支冲突·git协作·git fetch
panzer_maus27 分钟前
Redis的简单介绍(1)
数据库·redis·缓存
zzlyyds1 小时前
工作的时候遇到的git版本冲突与合并问题
git
BestOrNothing_20151 小时前
Git fetch 详解:git fetch 和 git fetch origin 到底有什么区别?(origin/xxx、远端跟踪分支一次讲透)
git·分支管理·开发规范·新手教程·fetch / origin·本地/远程 分支·detached head
填满你的记忆1 小时前
【从零开始——Redis 进化日志|Day1】初见 Redis,开启内存加速之旅
数据库·redis·缓存
gsls2008081 小时前
服务器状态监控Uptime Kuma
运维·服务器·git
小Mie不吃饭1 小时前
Spring boot + mybatis-plus + Redis 实现数据多级缓存(模拟生产环境)
java·spring boot·redis·mysql·缓存
一个很帅的帅哥1 小时前
GitHub MCP 服务器(共 58 个,按星标数降序)
服务器·github
阿郎_20111 小时前
复用已知的ssh公私钥实现docker的ssh传输
docker·github·ssl
K哥11251 小时前
【Redis】缓存策略
数据库·redis·缓存