错误:使用震荡方法连接到Elastic缓存时,对等方重置了连接

时间:2018-09-29 18:16:01

标签: redis elastic-cache

我正在使用弹性缓存单节点分片Redis 4.0更高版本。

我启用了传输加密并提供了redis身份验证令牌。

我使用此链接创建了一个带有堡垒的堡垒主机

https://aws.amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/

我可以使用以下方法连接到弹性缓存redis节点

redis-cli -h主机名-p 6379 -a mypassword

我也可以进行telnet。 但是 当我在连接后在redis-cli上ping(预期响应“ PONG”)时,它给出

“错误:对等方重置了连接”

我检查了双方的安全小组。 任何想法 ? 堡垒主机ubuntu 16.04机器

3 个答案:

答案 0 :(得分:1)

“错误:对等方重置了连接”表示Redis在不发送任何响应的情况下终止了您的连接。

一个可能的原因是您尝试不使用SSL来连接到Redis节点,因为您的连接将被Redis服务器拒绝而没有响应[1]。确保通过隧道代理中的正确端口进行连接。如果直接从堡垒主机进行连接,则应该使用本地主机。

另一个选择是您已错误地将通道配置为不包含Redis支持的SSL版本。您应该仔细检查配置文件是否与支持文档中提供的文件完全相同。

这不能解决您的问题,您可以尝试构建AWS开放源代码贡献中包含的CLI。[2]您需要检出存储库,按照自述文件中的说明进行操作,然后使BUILD_SSL = yes成为redis-cli。

[1] https://github.com/madolson/redis/blob/unstable/src/ssl.c#L464 [2] https://github.com/madolson/redis/blob/unstable/SSL_README.md

答案 1 :(得分:1)

正如我所提到的,我正在运行以下命令:

redis-cli -h主机名-p 6379 -a我的密码

通过stunnel连接到ElastiCache群集的正确方法应该使用“ localhost”作为主机地址,如下所示:

redis-cli -h localhost -p 6379 -a mypassword

有使用本地主机地址的说明:

当您通过堡垒在堡垒服务器和ElastiCache主机之间创建隧道时,该程序将启动一个服务,以监听本地TCP端口(6379),使用SSL协议封装通信并在本地之间传输数据服务器和远程主机。

您需要启动stunnel,检查服务是否正在侦听localhost地址(127.0.0.1),然后使用“ localhost”作为目标地址进行连接:“

  1. 启动通道。

    $ sudo stunnel /etc/stunnel/redis-cli.conf

  2. 使用netstat命令确认隧道已启动:

    $ netstat -tulnp | grep -i stunnel

  3. 您现在可以使用redis-cli通过隧道的本地端点连接到加密的Redis节点:

    $ redis-cli -h localhost -p 6379 -a MySecretPassword

    localhost:6379>设置foo“ bar”

    确定

    localhost:6379>获取foo

    “栏”

答案 2 :(得分:0)

ElastiCache Redis实例很可能正在使用加密传输和静态加密,并且从设计上看,Redis CLI与加密不兼容。

您需要设置tunnel以连接Redis集群

https://datanextsolutions.com/blog/how-to-fix-redis-cli-error-connection-reset-by-peer/