就绪检查失败:NOAUTH需要验证

时间:2016-03-15 11:59:55

标签: node.js redis sails.js

当我尝试使用adapter: 'redis'时,它告诉我安装socket.io-redis版本0.14。我这样做了,并将所有信息输入到session.js文件中:

module.exports.session = {
   adapter: 'socket.io-redis'
   host: '10...',
   port: 6379,
   db: 'sails',
   pass: '...',
};

现在,当我尝试运行应用程序时,出现以下错误:

Error: Ready check failed: NOAUTH Authentication required.

我不确定为什么pass: .。不管用?还有什么我应该做的吗?

注意:我正在使用Google计算实例进行redis托管,我有一个允许访问的防火墙规则。

2 个答案:

答案 0 :(得分:3)

我确实为我的问题找到了解决方案。我不确定它对你有多大用处,因为我相信我的情况有点不同。我在bitnami谷歌云计算实例上使用sails.js,我也在一个单独的bitnami实例上托管redis,我们有共同点。但是,我正在尝试连接到Redis以使用Kue。所以我没有使用我的配置/会话文件。我们仍然遇到相同的错误,因此解决方案是删除redis实例中的requiredpass,然后使用防火墙规则,只允许我的服务器访问Redis实例。

我认为根本问题是redis有任何尝试读/写数据存储的第二个密码提示。因此,从服务器传递密码只会让您登录,但不会让您访问数据,而是NOAUTH错误。所以我认为实例的requiredpass主要用于客户端,服务器端实例不需要它。这可能是我对如何使用Redis的天真,但我不知道如何从其他服务器输入密码到提示。我觉得防火墙规则对我来说现在很好,可以防止不需要的流量。

如果这是您想要做的/尝试,那么我为Google云执行此操作的方式是ssh进入Redis实例(通过您自己的命令行或通过Google提供的浏览器。然后编辑{{1找到带有sudo权限的文件。找到显示/opt/bitnami/redis/etc/redis.conf的行并在其前面放置一个#来注释掉。现在要让它生效,那么你必须重新启动服务器。 Bitnami表示您可以使用requiredpass执行此操作。但是,我收到了AUTH错误。因此,为了解决这个问题,我必须强制使用sudo /opt/bitnami/ctlscript.sh restart redis终止进程,然后使用sudo pkill -9 -f redis-server重新启动它。这应刷新配置文件,更新实例并允许服务器连接,而无需输入第二个提示密码。

如果您有任何疑问,请告诉我,我会尽可能地帮助您。

答案 1 :(得分:1)

您必须指定auth_pass

   module.exports.session = {
   adapter: 'socket.io-redis'
   host: '10...',
   port: 6379,
   db: 'sails',
   pass: '...',
   auth_pass: redis_url.auth.split(":")[1]
};

<强>更新

来自documentation

  

密码:null;如果设置,客户端将在connect上运行redis auth命令。   别名auth_pass(node_redis&lt; 2.5必须使用auth_pass)