我正在尝试使用 Facebook 的实时更新,但无法向 Facebook 提供他们可以使用的回调地址。我的开发机器位于防火墙后面,所以我想使用 ec2 实例将流量转发到开发机器。
目前进展:
应用程序已在本地主机上启动并运行:
http://0.0.0.0:5000
在 ec2 上创建 Ubuntu 10.11 实例
在 EC2 实例上授权端口
localhost$ec2-authorize default -p 5000 localhost$ec2-authorize default -p 22
在 ec2 上配置 sshd
localhost$ssh -i ubuntu@ec2_public_dns -i ~/.ssh/ec2_key_pair.pem ec2$sudo echo "AllowTcpForwarding yes" >> /etc/ssh/sshd_config ec2$sudo echo "GatewayPorts yes" >> /etc/ssh/sshd_config ec2$sudo /ect/init.d/ssh restart
启动 ssh 隧道
localhost$ssh -R0.0.0.0:5000:localhost:5000 ubuntu@ec2_public_dns -i ~/.ssh/ec2_key_pair.pem
在浏览器中测试
http://ec2_public_dns:5000
但什么都没有发生 :( 请求只是超时。知道我做错了什么吗?
谢谢!
进步
好的,我在本地计算机上访问 Web 服务器取得了一些进展。通过 ssh 登录后,我可以使用 curl 从提示符获取主页:
localhost$ssh -R0.0.0.0:5000:localhost:5000 ubuntu@ec2_public_dns -i ~/.ssh/ec2_key_pair.pem
ec2$curl localhost:5000
<!DOCTYPE html>
<html>
...
</html>
它甚至可以ec2_public_dns
与 ec2 一起使用:
ec2$curl ec2-23-20-132-36.compute-1.amazonaws.com:5000
<!DOCTYPE html>
<html>
...
</html>
但是,它无法从我的本地开发机器连接:
localhost$curl ec2-23-20-132-36.compute-1.amazonaws.com:5000
curl: (7) couldn't connect to host
答案1
@spinlock:你再也没有回来认领你的答案,但无论如何,访问规则对我来说是第一种可能性。我绝对建议任何使用 EC2 的人首先花点时间了解安全组,它功能强大且非常有用。为了方便任何人进行谷歌搜索,spinlock 的答案是:
好的,我明白我错在哪里了。当我创建 ec2 实例时,我选择了“快速启动”,因为我认为我只需要一个简单的运行 sshd 的 unix。问题是,这会创建一个名为“quicklaunch-1”的单独安全组。
所以这样做:
localhost$ ec2-authorize quicklaunch-1 -p 5000