AWS不通过NAT连接到私有子网实例

首先,我知道这不是你应该总是这样做,但现在如果事实上可能会节省很多小时。

我能够做到以下几点:

ssh (with .pem) -> NAT -> ssh to private subnet instance -> success 

我想能够绕过NAT部分,直接进入私有实例。

我也分配了我的私人实例一个public ip但试图连接只是挂起,最终超时。

ssh with -vvv specifiedssh 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 

ssh规则是security group

 SSH TCP 22 0.0.0.0/0 

我是否需要将路由添加到路由表中? 我知道,因为它是私有的,所以不应该以这种方式访问​​它,而是临时解决scheme来testing新的应用程序,目前没有任何安全隐患,因为所有事情都使用虚拟数据运行,实例将在实际部署之前重新创build。

我已经添加了一个安全组规则,允许TCP端口22 ssh入站连接,并试图通过分配的公共IP访问仍然没有成功。

任何帮助,将不胜感激。

如果你想在没有NAT的情况下ssh你的实例,它必须可以从你的networking(你的笔记本电脑所在的位置)到达。 因此我看到两个解决scheme:

  • 设置一个弹性IP到您的实例+互联网网关/路由到您的子网。 没有互联网网关的弹性IP是不够的,因为stream量不能正确路由。 但是,如果您设置了Internet网关,则NAT将变得毫无用处
  • 正确的做法是使用VPN解决scheme,比如openvpn(你可以find一个openvpn AMI,所有这些都是由aws社区configuration的)。 例如,看到这个线程的VPN的进一步细节