AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 463643
Accepted
Alistair Prestidge
Alistair Prestidge
Asked: 2013-01-08 02:45:25 +0800 CST2013-01-08 02:45:25 +0800 CST 2013-01-08 02:45:25 +0800 CST

通过外部 ip 地址更改 aws 实例的安全组

  • 772

请注意:端口 22 只是一个示例端口,有些情况下它不是我要处理的端口 22。

安全组

"server-1" has a security group "group-1"
"server-2" has a security group "group-2"
"server-1" has an elastic ip address assigned to it i.e 111.222.333.444

和

"group-2" is allowed to connect to "group-1" via port 22

因此,如果我通过以下命令从server-2 ssh到server-1

ssh -iKEY.pem [email protected]

连接正常,按预期工作。

但是,如果我尝试通过此命令进行连接。

ssh -iKEY.pem [email protected]

由于我认为显而易见的原因,它不起作用

我已经离开 aws 网络以连接到server-1,因此 aws 将来自server-2的连接视为外部资源,不再是 aws 实例。这意味着它不会使用说的安全组:

"group-2" is allowed to connect to "group-1" via port 22

实际问题

我想通过 ElasticIP 地址连接到server-1 ,这样我就可以愉快地重启server-1和/或server-2,而不必担心 aws 实例名称/ip 地址已更改,即第一个 ssh 示例中的域名将在重新启动/新实例接管时发生变化。

所以我的问题真的是这样做的最佳实践方法是什么。我目前可以看到的选项是:

  1. 对 ElasticIP 地址进行反向 dns 查找,并使用此域名从服务器 2连接到服务器 1 ,即弹性 IP 地址为 111.222.333.444,反向查找将返回我

    ec2-111-222-333-444.eu-west-1.compute.amazonaws.com

    我无法继续手动构建它,因为我还需要知道实例所在的可用区才能做到这一点(我非常希望不关心它在哪里)。

  2. 我假设我可以执行一个 aws api 调用来获取附加到 ElasticIP 地址的当前实例名称。我并不过分关注该应用程序,因为它知道它位于 aws 服务器上,并且希望远离 api。

  3. 在 aws 中使用 vpc 实例。这样我就可以始终将相同的私有 IP 地址附加到server-1并可靠地连接到它,即使在任一服务器重新启动后也是如此。然而,这似乎伴随着大量的配置和维护。

  4. 我可以在重启后手动更新指向server-1的任何配置设置(这不是系列建议)。

  5. 向世界开放server-1端口 22(注意:我想打开其他端口,而不仅仅是 22)并担心应用程序进行身份验证。(再次不是一个真正明智的选择,因为如果我想打开端口 80 到server-2然后必须使用 .htaccess 或类似的来验证连接,因此只是移动这个问题而不是真正解决它)。

我对选项 1 和 2 的问题是,我必须始终执行这些查找,这会在应用程序上产生大量开销,或者我缓存它并且必须忍受这样一个事实,即如果server-1的实例发生更改,即发生重新启动然后有一段时间server-2将无法连接到server-1,直到它取消缓存实例名称。

选项 3 可能是最好的解决方案,但它伴随着耗时的配置和维护,并且需要我们公司内部的额外知识。

有没有人有其他可行的建议?

security
  • 2 2 个回答
  • 485 Views

2 个回答

  • Voted
  1. Best Answer
    jamieb
    2013-01-10T09:32:44+08:002013-01-10T09:32:44+08:00

    鉴于您的要求,我同意使用 VPC 是最佳解决方案。由于听起来您已经完成了研究,您知道 VPC 允许对子网和主机寻址进行更细粒度的控制。要回答您的问题,那就是“最佳实践”方法。

    我要做的是创建两个私有子网,每个 AZ 一个,然后在每个子网中放置一个具有静态私有 IP 地址的弹性网络接口。然后您可以随意将 ENI 附加/分离到适当的实例。这允许一些很酷的东西和功能,比如在流量仍在流经它时在服务器之间热交换 NIC。是的,设置 VPC 有一个重要的学习曲线,但是当使用需要相互通信的多个 EC2 实例时,权衡会大大提高安全性和灵活性。

    值得注意的是,利用 AWS API(正如您也提到的)也是满足您即时需求的可行解决方案。但是,在编写自定义解决方案的这条道路上走得越远,随着需求的增长,维护它所花费的时间就越多。

    • 2
  2. wisbucky
    2013-08-07T10:07:39+08:002013-08-07T10:07:39+08:00

    查找实例的公共 dns 的 AWS api 方法是这样的:

    http://169.254.169.254/latest/meta-data/public-hostname
    

    (这是 AWS 内部 ip,不是外部服务。)

    但至于问题的根源,弹性 IP 的公共 DNS 应该与该弹性 IP 永久关联,无论它指向的重启/新实例如何。我所有的弹性 IP 公共 DNS 看起来都像 ec2-11-22-33-44.compute-1.amazonaws.com。你怎么在公共 DNS 中有一个区域?上面的api返回什么?

    • 0

相关问题

  • OpenSSH 漏洞 [重复]

  • 选择什么安全套件?

  • 安全地授予对 SQL 2005 复制监视器的访问权限以创建快照

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • 如何将安全组添加到正在运行的 EC2 实例?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve