【问题标题】:How to connect to a webserver on ec2 'privately'如何“私下”连接到 ec2 上的网络服务器
【发布时间】:2013-08-29 08:01:34
【问题描述】:

我在一个 ec2 实例上部署了一个小型 Web 应用程序,我想在不公开的情况下对其进行测试。

使用弹性 IP 并不能解决我的问题,因为 IP 会将其暴露给外部世界,而我们还没有为此做好准备。

我知道 Amazon VPC,但它似乎有点矫枉过正,因为我不需要所有这些功能,也不想处理设置。我所需要的只是能够通过使用私有 IP 或类似的方式访问网络服务器。

有没有快速而肮脏的解决方案?

【问题讨论】:

    标签: amazon-ec2 ip-address vpn


    【解决方案1】:

    如果您想要一个真正私有的 EC2 实例,您需要考虑在 VPC 内启动它。您需要公共子网中的堡垒主机和私有子网中的实例。

    【讨论】:

      【解决方案2】:

      创建一个安全组,只允许从您的 IP(运行您将进行测试的浏览器的机器的 IP)到 Web 服务器端口(可能是 80)的流量,并将此安全组分配给您的 ec2 实例。

      这样只有你可以访问网络应用程序。

      如果您需要在不同的位置工作,请编写一个简单的脚本来更新安全组并添加您当前的 IP。这些更改会立即应用,不需要重新启动。您可以从whatismyip 获取您当前的IP,并使用Amazon SDK 更新安全组。

      【讨论】:

      • 在某些情况下这可能是一个解决方案。想象一下,我必须从其他位置运行演示,但我没有时间更改安全规则。有没有办法保证只有拥有特定私钥或类似东西的人才能访问?
      • 更新我的答案以解决多个位置。私钥与 ssh 相关的解决方案相关。您也可以使用客户端证书,但这些需要更改您的 Web 应用程序。安全组在“网络”级别运行,因此对您的应用是透明的。
      【解决方案3】:

      您可以将您的网络服务器设置为仅在 127.0.0.1(而不是 0.0.0.0)上侦听,然后使用 SSH 从您的本地计算机通过隧道连接到实例。

      从您的桌面设置 SSH 连接:

      $ ssh -L 3000:localhost:80 ec2-user@ec2-instance.amazonaws.com
      

      然后在您的浏览器中访问http://localhost:3000,它会通过SSH连接将您桌面上的3000端口转发到实例上的80端口。

      【讨论】:

      • 自从我使用 Windows 以来,我最终使用了 Putty 端口转发,太棒了!
      • @MarsellusWallace 你是怎么做到的?我正在努力寻找在 Windows 上使用 Putty 的清晰实现
      • @Greg Kempe 你是如何通过 ppk 的?
      • 或者在~/.ssh/config:Host <host> HostName <host-name> User <host-user> IdentityFile <host-user-priv-key> LocalForward 127.0.0.1:3000 127.0.0.1:80
      【解决方案4】:

      您无需 EIP 即可访问您的实例 - 它具有自动关联的公有 DNS 名称。

      【讨论】:

      • 谢谢,有没有办法将给定实例的访问权限(无论是通过 EIP 还是使用公共 DNS 名称寻址)仅限于拥有给定私钥或类似内容的人?
      • 例如,如果您的实例是 Linux 机器,并且您只允许 ssh 连接,那么只有您(拥有私钥)可以登录机器。
      • 它是 linux,我可以在其中进行 ssh。我试图限制的是对我的 Web 应用程序的访问。理想情况下,我可以创建一个 vpn 并使用私有 IP,但我希望有一种更简单的方法
      • 开启 https 并在您的网络服务器中使用基本身份验证
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多