AWS 无需通过 NAT 即可连接到私有子网实例

Chr*_*rds 1 connection amazon-ec2 amazon-web-services

首先,我知道这不是你应该一直做的事情,但就目前而言,如果它实际上可能的话,它会节省很多时间。

我能够执行以下操作:

ssh (with .pem) -> NAT -> ssh to private subnet instance -> success
Run Code Online (Sandbox Code Playgroud)

我希望能够绕过该NAT部分并直接进入私有实例。

我还分配了我的私有实例 apublic ip但尝试连接只是挂起并最终超时。

的结果 ssh with -vvv specified

ssh -vvv -A ec2-user@<public-IP>
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to <public-IP> [<public-IP>] port 22.
debug1: connect to address <public-IP> port 22: Operation timed out
ssh: connect to host <public-IP> port 22: Operation timed out
Run Code Online (Sandbox Code Playgroud)

ssh规则是目前的security group

SSH TCP 22 0.0.0.0/0
Run Code Online (Sandbox Code Playgroud)

我是否需要将路线添加到路线表或沿着这些路线的东西?我知道因为它是私有的,所以不应该以这种方式访问​​,但它是测试新应用程序的临时解决方案,目前没有安全隐患,因为一切都在使用虚拟数据运行,并且实例将在实际部署之前重新制作.

我添加了一个安全组规则,它允许 TCP 端口 22 用于 ssh 入站连接,但在尝试通过分配的公共 ip 访问时仍然没有成功。

任何帮助,将不胜感激。

Tom*_*Tom 5

如果您想在没有 NAT 的情况下 ssh 实例,则必须可以从您的网络(您的笔记本电脑所在的位置)访问它。因此我看到了两种解决方案:

  • 为您的实例设置一个弹性 IP + 到您的子网的互联网网关/路由。没有互联网网关的弹性 IP 是不够的,因为流量将无法正确路由。但是,如果您设置了 Internet 网关,则 NAT 将变得毫无用处
  • 正确的做法是使用 VPN 解决方案,例如 openvpn(您可以找到一个 openvpn AMI,全部从 aws 社区配置)。例如,有关 VPN 的更多详细信息,请参阅线程