将 ec2 实例转发到本地主机以进行 rails 开发

将 ec2 实例转发到本地主机以进行 rails 开发

我正在尝试使用 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

相关内容