我正在使用弹性缓存单节点分片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机器
答案 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”作为目标地址进行连接:“
启动通道。
$ sudo stunnel /etc/stunnel/redis-cli.conf
使用netstat命令确认隧道已启动:
$ netstat -tulnp | grep -i stunnel
您现在可以使用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/