Ruby on rails Redis:不需要身份验证,但没有密码设置

Ruby on rails Redis:不需要身份验证,但没有密码设置,ruby-on-rails,ruby-on-rails-4,redis,sidekiq,Ruby On Rails,Ruby On Rails 4,Redis,Sidekiq,当我通过命令连接到Redis服务器时,出现错误NOAUTH Authentication required:Redis cli并运行ping检查Redis是否工作 我发现它描述了只有当Redis设置了密码时才会发生此错误,但我在etc/Redis/Redis.conf中检查了Redis配置文件,并且没有密码设置 有人知道是否有其他设置会导致此错误吗?谢谢你的帮助 p/s:我使用的是RubyonRailsWeb框架,Redis数据库用于Sidekiq 编辑:Redis版本为2.8.4。服务器托管

当我通过命令连接到Redis服务器时,出现错误NOAUTH Authentication required
Redis cli
并运行
ping
检查Redis是否工作

我发现它描述了只有当Redis设置了密码时才会发生此错误,但我在
etc/Redis/Redis.conf
中检查了Redis配置文件,并且没有密码设置

有人知道是否有其他设置会导致此错误吗?谢谢你的帮助

p/s:我使用的是RubyonRailsWeb框架,Redis数据库用于Sidekiq

编辑:Redis版本为2.8.4。服务器托管在AWS上

目前,我决定为Redis服务器设置一个密码,这样它在运行时就不能设置密码


(重新启动Redis服务器时,它将正常工作。您可以运行
sudo service Redis server restart
重新启动Redis服务器。)

如果您对配置文件进行了任何更改,请不要忘记使用
sudo service Redis server restart
命令重新启动Redis服务

编辑: 如果您在生产模式下运行redis服务,则redis需要密码才能运行。为此,您需要在位于
/etc/redis
的配置文件中设置密码

您需要在该文件的
部分的
下设置
requirepass******

然后重新启动服务器
sudo服务redis服务器重新启动

之后,在您设置主机名和端口的配置文件或初始值设定文件中添加该密码。 例如:

$redis=redis.new(:host=>'localhost',:port=>6379,:password=>“******”)

我也遇到了同样的问题(在AWS上运行),发现我们的redis端口已暴露。你可能也有过同样的经历。有人在胡闹

编辑:
解决方案:然后(假设它作为服务运行)重新启动服务

我们也面临类似的问题。看起来有人扫描了AWS,连接到所有公共redis服务器,并可能运行了“CONFIG SET REQUIREPASS“”,从而锁定了正在运行的redis实例。重新启动redis后,配置将恢复正常


最好的办法是使用AWS安全组策略,并对公众阻塞6379端口。

我也有同样的问题。之后,我为
redis
服务器设置了
requirepass

并将该密码添加到
初始化器/redis.rb

$redis = Redis.new(:password=>"****") 

它工作正常

在AWS实例上运行Redis时遇到了完全相同的问题。我会在没有任何密码要求的情况下重新启动redis服务器(#requirepass“”),可以正常工作几个小时,然后抛出“NOAUTH Authentication required”,最后必须重新启动redis服务器

检查了AWS中实例的安全组设置,并看到端口6379向公众开放(0.0.0.0/0)。我们将端口访问限制在我们唯一需要访问的服务器上,从那以后就再也没有出现过这个问题


这是我对StackOverflow的第一次贡献。谢谢你的帮助

我也有同样的问题,我发现是有人用另一个
redis.cnf
configure文件启动了redis,所以我停止了redis服务器,然后启动了redis服务器,并指定了一个configure文件

redis-server /etc/redis.cnf

然后一切正常。

这可能不是服务器正在使用的配置文件。或者,可能是有人连接到您的服务器,并使用
CONFIG set requirepass
命令设置密码,在这种情况下,重新启动Redis服务器应该会解决这个问题。@ItamarHaber我确定我的服务器使用的是配置文件。是的,我重新启动了Redis服务器,它在没有密码的情况下再次工作,但我不知道为什么以后需要密码,我无法运行
CONFIG get requirepass
来获取密码。可能是因为有人正在连接到您的服务器并设置requirepass。@p我们还没有找出这一问题的根本原因problem@Puneeth我决定为Redis服务器设置密码,以检查它是否仍然存在此错误。我没有做任何更改,Redis服务器在运行时需要密码,而配置未设置密码。是的,我重新启动了服务器,它正常工作,但再次卡住。所以我决定为它设置一个密码,这样它就不能再设置新密码了。你有没有把你的redis端口(大概是6379)公开给全世界?关闭它是解决方案的第一步。是的,可能服务器没有受到redis 6379端口的保护。我的解决方案是为redis server设置一个密码,这样它就不能覆盖密码。在我的情况下,巨魔清除了数据库(运行FLUSHALL),然后运行配置集REQUIREPASS“”,两次。幸运的是,我有备份,谢谢你指出了允许他这么做的确切漏洞,以及如何修复它。这似乎是一个非常合理的解释,在AWS上也有同样的问题。我想我也有同样的问题,但你是如何重新启动redis的?当我尝试“sudo/etc/init.d/redis6379restart”时,我得到“Stopping…(error)NOAUTH Authentication required.”不过,我发现PID和sudo杀死了这个进程。@Kohanz你可以运行
sudo service redis server restart
来重新启动redis。如果你的服务器安装在AWS上,你还应该限制连接到你的redis端口。