如何使用 SSH 隧道让本地 Django 开发服务器认为它在您的 AWS 网络中运行?
我的场景是运行本地 Django 服务器,即 python manage.py runserver
和 Redis 作为缓存后端 (Elasticache)。当我的应用程序在 AWS 环境中运行时,它可以访问 Elasticache,但在本地它不会(这是一件好事)。如果出于某种原因我想使用 Elasticache 测试我的本地环境,我需要以某种方式使用 SSH 隧道让 AWS 认为它在 VPC 网络内运行。
我试图通过使用下面的方法让它工作。我已经确认我可以使用 SSH 隧道在本地连接 Redis Desktop Manager所以 100% 我知道 AWS 支持这个,我现在的问题是用 Django 做同样的事情。
这是我试过的:
> python manage.py runserver 8000
> ssh -i mykey.pem ec2-user@myRandomEC2.com -L 6379:localhost:6379
当我访问 http://127.0.0.1:8000/
时收到“错误 60 连接到”消息。
我在这里做错了什么?
注意事项:
ec2-user@myRandomEC2.com
不是 Redis 服务器,只是另一个 AWS 上的 EC2 实例可以访问我想用作 隧道。mykey.pem
具有访问权限和正确的权限。- ec2 实例具有所有正确的访问权限和端口。
- 使用 Redis Desktop Manager 测试了 SSH 隧道这适用于 那个软件。
- Elasticache 和 EC2 实例都在同一区域并且可以相互连接。
最佳答案
ssh -i mykey.pem ec2-user@myRandomEC2.com -L 6379:localhost:6379
这会将请求从您的本地计算机(在 :6379 上)转发到 EC2 实例上的 localhost:6379
。这不是你想要的(除非你有在 EC2 实例上本地运行的 redis)
您应该改用 Elasticache IP
ssh -i mykey.pem ec2-user@myRandomEC2.com -L 6379:<elasticache-ip>:6379
关于python - 使用 SSH 隧道让 Django 服务器认为它在 AWS 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36018014/