如何通过NAT服务器在VPC私有子网中通过SSH连接到ec2实例

我用一个公有子网和一个私有子网创build了一个VPC。 私有子网不能直接访问外部networking。 因此,在公有子网中有一个NAT服务器,用于将私有子网的所有出站stream量转发到外部networking。

目前,我可以从公有子网到私有子网,也可以从NAT到私有子网的SSH。 但是,我想要的是从任何机器(家用笔记本电脑,办公机器和移动)到私有子网中的实例的SSH。

我已经做了一些研究,我可以设置NAT框转发SSH到私有子网中的实例。 但是我没有这个运气。

任何人都可以列出我需要设置,使之成为可能。

命名是:

笔记本电脑(VPC之外的任何设备)

NAT(公有子网中的NAT服务器)

目的地(我想要连接的私人子网中的服务器)

不确定以下是限制与否:

“目的地”没有公共IP,只有一个子网ip,例如10.0.0.1“目的地”不能通过nat的公共连接到“nat”。 有几个“目标”服务器,我需要为每个服务器设置一个?

谢谢

您可以设置一个堡垒主机连接到您的VPC中的任何实例:

http://blogs.aws.amazon.com/security/post/Tx3N8GFK85UN1G6/Securely-connect-to-Linux-instances-running-in-a-private-Amazon-VPC

您可以select启动一个新的实例作为堡垒主机,或者使用现有的NAT实例作为堡垒。

如果您创build一个新的实例,作为概述,您将:

1)为您的堡垒主机创build一个安全组,允许从您的笔记本电脑进行SSH访问(请注意,此安全组为第4步)

2)在VPC的公共子网中启动一个单独的实例(堡垒)

3)在启动时或通过分配弹性IP给该堡垒主机一个公共IP

4)更新没有公有IP的每个实例的安全组,以允许从堡垒主机进行SSH访问。 这可以使用堡垒主机的安全组ID(sg – #####)来完成。

5)使用SSH代理转发(ssh -A user @ publicIPofBastion)首先连接到堡垒,然后一旦在堡垒中,SSH连接到任何内部实例(ssh user @ private-IP-of-Internal-Instance)。 代理转发负责转发您的私钥,因此不必将其存储在堡垒实例上( 从不在任何实例上存储私钥

上面的AWS博客文章应该能够提供一些关于这个过程的细节。 我还包括下面的情况下,你想要的堡垒主机的额外细节:

堡垒主机的概念: http : //en.m.wikipedia.org/wiki/Bastion_host

如果您需要澄清,请随时发表评论。

只是澄清一下:一旦你进入了堡垒主机,你需要以用户ec2-user身份进入NAT主机。 这让我有些失望,因为通常ubuntu用户是AWS上的ubuntu。 所以我做了:

 laptop> ssh -A ubuntu@ssh_bastion ssh_bastion> ssh ec2-user@nat_private_dns_or_private_ip 

此外,请记住,您的ssh_bastion应该有一个出站规则,允许stream量到其他主机和SGS的。