Redis 时遇到错误信息 DENIED Redis is running in protected mode because ...

打印 上一主题 下一主题

主题 874|帖子 874|积分 2626

当你在使用 Redis 时遇到错误信息 DENIED Redis is running in protected mode because protected mode is enabled and no password is set for the default user,这意味着 Redis 服务器出于安全思量,只接受来自当地回环接口(loopback interface)的毗连。假如你需要从外部毗连到 Redis 服务器,需要接纳相应的措施来禁用保护模式或设置密码。以下是解决这个标题的几种方法:
方法 1:禁用保护模式

使用 CONFIG SET 命令


  • 毗连到 Redis 服务器:

    • 使用 Redis 客户端(如 redis-cli)从同一台主机毗连到 Redis。

  • 禁用保护模式:

    • 执行 CONFIG SET protected-mode no 命令来禁用保护模式。

  • 使更改永久生效:

    • 执行 CONFIG REWRITE 命令将配置更改写入 redis.conf 文件。
      示例
      1.   # 连接到 Redis 服务器
      2.   redis-cli
      3.   # 禁用保护模式
      4.   CONFIG SET protected-mode no
      5.   # 使更改永久生效
      6.   CONFIG REWRITE
      复制代码

注意事项

  • 安全性:

    • 禁用保护模式后,Redis 服务器将不再限定来自非当地接口的毗连。
    • 确保 Redis 服务器不直接袒露在互联网上,或者使用防火墙和安全组来限定访问。

方法 2:编辑 redis.conf 文件


  • 编辑 redis.conf 文件:

    • 找到 protected-mode 配置项,将其设置为 no。

  • 重启 Redis 服务器:

    • 生存文件并重启 Redis 服务器以使更改生效。
      示例
      1.   # 编辑 redis.conf 文件
      2.   sudo nano /etc/redis/redis.conf
      3.   # 找到 protected-mode 配置项,将其设置为 no
      4.   protected-mode no
      5.   # 保存并退出编辑器
      6.   Ctrl + X
      7.   Y
      8.   Enter
      9.   # 重启 Redis 服务器
      10.   sudo systemctl restart redis
      复制代码

方法 3:启动 Redis 时禁用保护模式

假如你只是手动启动 Redis 服务器举行测试,可以在启动命令中添加 --protected-mode no 选项。
示例
  1.                 # 启动 Redis 服务器并禁用保护模式
  2.                 redis-server --protected-mode no
复制代码
方法 4:设置密码

设置密码是一种更安全的解决方案,它允许你通过身份验证来访问 Redis 服务器。

  • 编辑 redis.conf 文件:

    • 找到 requirepass 配置项,设置一个强密码。

  • 重启 Redis 服务器:

    • 生存文件并重启 Redis 服务器以使更改生效。
      示例
      1.   # 编辑 redis.conf 文件
      2.   sudo nano /etc/redis/redis.conf
      3.   # 找到 requirepass 配置项,设置一个强密码
      4.   requirepass yourStrongPassword
      5.   # 保存并退出编辑器
      6.   Ctrl + X
      7.   Y
      8.   Enter
      9.   # 重启 Redis 服务器
      10.   sudo systemctl restart redis
      复制代码

在客户端中使用密码

  • 毗连到 Redis 服务器:

    • 使用密码毗连到 Redis 服务器。

  • 验证密码:

    • 使用 AUTH 命令举行身份验证。
      示例
      1.   # 连接到 Redis 服务器
      2.   redis-cli
      3.   # 验证密码
      4.   AUTH yourStrongPassword
      复制代码

发起的最佳实践

  • 设置密码:

    • 使用密码是最安全的解决方案,可以有效防止未经授权的访问。

  • 使用防火墙:

    • 即使禁用保护模式,也应使用防火墙或安全组来限定对 Redis 服务器的访问。

  • 绑定到特定 IP:

    • 在 redis.conf 文件中设置 bind 配置项,绑定到特定的 IP 地址,而不是 0.0.0.0。
      示例:绑定到特定 IP
      1.   # 编辑 redis.conf 文件
      2.   sudo nano /etc/redis/redis.conf
      3.   # 找到 bind 配置项,绑定到特定的 IP 地址
      4.   bind 127.0.0.1 192.168.1.100
      5.   # 保存并退出编辑器
      6.   Ctrl + X
      7.   Y
      8.   Enter
      9.   # 重启 Redis 服务器
      10.   sudo systemctl restart redis
      复制代码

总结

  • 禁用保护模式:

    • 使用 CONFIG SET protected-mode no 和 CONFIG REWRITE 命令。
    • 或者编辑 redis.conf 文件将 protected-mode 设置为 no 并重启服务器。
    • 或者在启动 Redis 时添加 --protected-mode no 选项。

  • 设置密码:

    • 在 redis.conf 文件中设置 requirepass 配置项。
    • 使用 AUTH 命令在客户端举行身份验证。

  • 最佳实践:

    • 发起设置密码并联合防火墙规则来提高安全性。
    • 制止将 Redis 服务器直接袒露在互联网上。
      通过这些方法,可以解决 Redis 保护模式导致的毗连标题,并确保 Redis 服务器的安全性和稳定性。

参考资源

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

东湖之滨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表