我有一个EC2实例,它已设置为通过VPN访问安全服务器。第二台服务器只响应绑定到EC2服务器公共IP地址的呼叫。
我成功使用ssh从我的笔记本电脑访问EC2实例......
ssh -i mypem.pem ubuntu@ec2-my-public-ip-address.eu-west-1.compute.amazonaws.com
但我的命令行设置为:
ubuntu@my-private-ip-address:~$
因此,当我尝试在EC2服务器上运行一段java代码时,它会通过VPN调用安全服务器,因为它使用私有IP地址作为其标识符,因此失败了。这里不能提供java代码,因为它是用于安全服务的,但它已经过其他示例和EC2的广泛测试,我们知道这里没有问题。
我正在尝试确定是否有办法确保我从EC2服务器执行的任何代码都使用我的公共IP地址而不是私有IP地址?
答案 0 :(得分:0)
私有IP地址是EC2实例知道的唯一IP地址。
公共IP地址由EC2网络基础设施使用自动静态NAT转换为私有IP,因此实例实际上从未意识到它。
检查ifconfig
,您会注意到公共IP无处可见。
然而,如果您$ curl ipv4.icanhazip.com
(或任何其他“我的IP是什么?”服务),您会发现您的实例的公共IP地址将始终作为外部服务看到的地址返回。 / p>
在内部使用专用IP会自动导致在访问Internet时使用公共IP地址。
答案 1 :(得分:0)
您可以将ssh
或ftp
工具与EC2实例专用IP连接。
1)您需要创建一个弹性IP。导航到EC2服务>网络安全。
2)将此弹性IP与EC2实例私有ip相关联。
3)更新EC2实例的安全组中的入站规则。添加带有源“我的IP”选项的SSH端口22。
现在您可以使用终端了:
ssh ec2-user@<elastic ip>
让用户安装了EC2密钥对证书。如果没有运行,请执行以下操作:
ssh-add -K <.pem file>