我在 AWS 上有一个 Redis 实例,我想从本地计算机使用 Redis 桌面管理器进行连接
我能够通过 ssh 进入我的 ec2 实例,然后运行
redis-cli -h host
并连接到它。
但是在我的本地机器上不可能做到同样的事情。
我确信一定有一种方法可以使用 GUI 来监控我的 Redis,并且我想如果我可以使用 pem 文件连接到 ec2 并且我可以从那里的 insde 连接到 Redis,那么一定有一种方法可以将两者结合起来吗?并通过我的 ec2 实例本地连接到 redis 实例?有什么想法吗?
根据设计,AWS EC 域部署为仅在 AWS 内使用。来自文档:
因此,无法从您的 VPC 外部直接访问它。为此,您需要在本地家庭/工作网络和 VPC 之间设置一个 VPN,或者建立一个Elasticache 是一项设计用于在您的 VPC 内部使用的服务。由于互联网流量的延迟和安全问题,不鼓励外部访问。但是,如果出于测试或开发目的需要从外部访问 Elasticache,则可以通过 VPN 来完成。
ssh 隧道,通常更容易进行测试和开发。
对于 ssh 隧道,您将需要一个公共代理/堡垒 EC2 实例,通过它建立隧道。有许多关于如何针对不同 AWS 服务执行此操作的教程。无论是 ES、EC、Aurora Serverless 还是 RDS Proxy,一般流程都是相同的。一些例子:
AWS 是一个巨大的谜团,很难找到初级到中级的资源,因此我将针对那些可能偶然发现这一点的人稍微扩展 @Marcin 的答案。
设置通常所说的“跳箱”来连接到各种 AWS 资源非常简单 - 这只是与您尝试连接的资源位于同一 VPC(网络)内的任何 EC2 实例- 在本例中为 Elasticache redis 集群。 (如果您遇到麻烦,只需启动一个新实例 - t4g.nano 或一些超小的东西就可以了。)
您需要确保您位于包含密钥的目录中,但随后应该能够运行以下命令将您想要使用的任何端口链接到远程 Redis 集群:
ssh -i ${your_ssh_key_name.pem} ${accessible_ec2_host} -L ${port_to_use_locally}:${inaccessable_redis_or_other_host}:${inaccessable_redis_port}
然后就可以使用localhost
和
${port_to_use_locally}
连接redis
AWS 文档 在同一 VPC 中创建一个充当堡垒主机的 EC2 实例。
需要注意的是,如果您使用无服务器缓存,则还必须打开端口 6380。要记住的另一件重要事情是在连接到无服务器缓存时使用 TLS
连接步骤:
ssh -i ${your_ssh_key_name.pem} ${ec2_host} -L ${port_to_use_locally}:${redis_or_other_host}:${redis_port}
--tls
选项连接到本地主机上的代理端口
redis-cli -h localhost --tls -p 6379