我在aws中创建了一个带有公共子网和私有子网的VPC。专用子网不能直接访问外部网络。因此,在公共子网中有一个NAT服务器,它将所有的出站流量从专用子网转发到外部网络。
目前,我可以从公共子网SSH到私有子网,也可以SSH从NAT到私有子网。但是,我想要的是SSH从任何机器(家用膝上型电脑、办公机器和移动设备)到私有子网中的实例。
我已经做了一些研究,我可以设置NAT框将SSH转发给私有子网中的实例。但我运气不好。
有人能列出我需要设置什么才能让这一切成为可能吗?
命名如下:
膝上型计算机(VPC以外的任何设备)
nat (公共子网中的NAT服务器)
目标(我想连接到的私有子网中的服务器)
不确定以下是否有限制:
“目的”没有公共IP,只有子网ip,例如10.0.0.1“目的地”不能通过nat的public连接到"nat“。有几个“目的地”服务器,我需要为每个服务器设置一个吗?
谢谢
发布于 2014-11-15 05:11:28
您可以设置一个堡垒主机来连接到VPC中的任何实例:
您可以选择启动将作为堡垒主机的新实例,或者使用现有的NAT实例作为堡垒。
如果您创建一个新实例,作为概述,您将:
1)为您的堡垒主机创建一个安全组,允许从您的膝上型计算机访问SSH (请注意此安全组用于步骤4)
2)在VPC中的公共子网中启动单独的实例(bastion)。
3)在发射时或通过分配弹性IP,为该堡垒主机提供公共IP
4)更新没有公共IP的每个实例的安全组,以允许从bastion主机访问SSH。这可以使用bastion主机的安全组ID (sg-#)来完成。
5)使用SSH代理转发(ssh -A user@publicIPofBastion)先连接到堡垒,然后在堡垒中将SSH连接到任何内部实例(ssh user@私有-IP-of-内部实例)。代理转发负责您的私钥转发,这样它就不必存储在堡垒实例上(永远不要在任何实例上存储私钥!!)
上面的AWS博客应该能够提供一些关于这个过程的细节。我还包括了以下内容,以防您需要有关堡垒主机的额外详细信息:
基站主机的概念:http://en.m.wikipedia.org/wiki/Bastion_主机
如果您需要澄清,请随时发表评论。
发布于 2019-03-05 17:48:07
我唯一能让它运转的方法。
1)确保此私有实例的安全组在入站规则中包含来自公共子网的安全组。
端口协议源
所有sg-0b6616e070b9e2d(公共安全组)
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它应该能工作
发布于 2015-04-16 22:35:09
澄清一下:一旦ssh进入了您的堡垒主机,您就需要以用户ec2-user的身份进入NAT主机。这让我有点不知所措,因为在AWS上,ubuntu的用户通常是ubuntu。所以我做了:
laptop> ssh -A ubuntu@ssh_bastion
ssh_bastion> ssh ec2-user@nat_private_dns_or_private_ip此外,请记住,您的ssh_bastion应该有一个出站规则,允许向其他主机和sg的流量。
https://serverfault.com/questions/643647
复制相似问题