如何通过NAT服务器SSH到VPC专用子网中的ec2实例


16

我在带有公共子网和私有子网的AWS中创建了VPC。专用子网不能直接访问外部网络。因此,在公共子网中有一个NAT服务器,它将所有出站流量从私有子网转发到外部网络。

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

我已经进行了一些研究,可以设置NAT框将SSH转发到私有子网中的实例。但是我为此不走运。

任何人都可以列出我需要进行哪些设置才能实现此目的。

命名为:

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

nat(公共子网中的NAT服务器)

目标(我要连接到的专用子网中的服务器)

不确定以下是否为限制:

“目标”没有公共IP,只有一个子网ip,例如10.0.0.1。“目标”无法通过nat的公共网络连接到“ nat”。有多个“目标”服务器,我是否需要为每个服务器设置一个?

谢谢


链接概述了通过SSH代理转发连接到专用子网中的EC2实例所需的步骤。
Shailender Rawat 2015年

Answers:


25

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

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

您可以选择启动将用作堡垒主机的新实例,也可以使用现有的NAT实例作为堡垒。

如果创建新实例作为概述,则您将:

1)为您的堡垒主机创建一个安全组,该安全组将允许您从便携式计算机进行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

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


3
确保在堡垒的入站和出站都允许SSH / 22。
user464180 2015年

这是一个关键点,必须成为答案的一部分!
塔里克

除了公认的答案有很大帮助(但不是全部)之外,我还必须确保安全组允许入站和出站流量。乍一看似乎已经完成了,但是由于我使用了CloudFormation模板,所以我没有注意到传入私有子网的流量的来源是我的ELB。因此,它允许所有流量,但仅来自ELB。将其更改为我的公共子网可以解决此问题。
米兰Markovic,

1

我可以使它工作的唯一方法。

1)确保此私有实例的安全组在入站规则中具有来自公共子网的安全组

端口协议源
全部全部sg-0b6616e070b9ea2d(公共安全组)

2)使用代理命令,配置您的ssh配置文件,使其具有如下所示的内容

vim ~/.ssh/config

Host publichost
   HostName 24.123.34.45
   User ubuntu
   IdentityFile ~/mypem.pem
   ProxyCommand none
Host privatehost
   HostName 10.0.2.133
   User ubuntu
   IdentityFile ~/mypem.pem
   ProxyCommand ssh publichost -W %h:%p

运行ssh privatehost 它应该工作


0

需要说明的是:SSH进入堡垒主机后,您需要以user身份进入NAT主机ec2-user。这让我有点恼火,因为通常ubuntu用户是AWS上的ubuntu。所以我做了:

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

另外,请记住,您的ssh_bastion应该具有出站规则,该规则允许流量传出到其他主机和sg。


是由于专门为NAT服务配置了Amazon AMI而导致的“ ec2_user”名称吗?那么,“ ec2-user”如何在私人计算机上获得帐户?
丹尼斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.