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

相关推荐
T - mars27 分钟前
Git在Pycharm中的使用
git
sunarmy1 小时前
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
git
草履虫建模2 小时前
Redis:高性能内存数据库与缓存利器
java·数据库·spring boot·redis·分布式·mysql·缓存
liangdabiao2 小时前
3分钟打造一个无敌的落地页Landing Page - 任何内容都完全自动化
程序员·github
A-刘晨阳2 小时前
【Linux】Redis 6.2.6 的二进制部署【适用于多版本】
linux·运维·redis
典学长编程2 小时前
高效学习之一篇搞定分布式管理系统Git !
大数据·git·搜索引擎
是2的10次方啊3 小时前
.gitignore失效自救指南:原理揭秘与工程师实战排查全流程
git
海外空间恒创科技3 小时前
香港站群服务器与普通香港服务器对比
服务器·git·github
JinSo4 小时前
EasyEditor AI 聊天助手:让低代码开发更简单
前端·javascript·github
程序猿ZhangSir4 小时前
Redis 缓存进阶篇,缓存真实数据和缓存文件指针最佳实现?如何选择?
数据库·redis·缓存