【问题标题】:SSH into Private VM IPs on Azure通过 SSH 连接到 Azure 上的专用 VM IP
【发布时间】:2017-04-13 20:22:58
【问题描述】:

我希望在 Azure 上部署一个测试网络,其中包含 10 个 VM,每个 VM 有一个专用 IP,位于以下网络堆栈中:

1 virtual network -> 1 subnet -> 1 network interface card (nic) -> 10 VMs

我要确认的是:是否可以为每个 VM 提供一个私有 IP 地址,所有这些地址都在同一个网卡下,并且能够从虚拟网络的顶级公共 IP 使用 SSH 隧道进入每个虚拟机?

【问题讨论】:

    标签: azure ssh network-programming virtual-machine


    【解决方案1】:

    是否可以给每个虚拟机一个私有 IP 地址,都在 一样的网卡?

    不,这是不可能的。在 Azure 上,网络接口卡 (NIC) 是一个独立的资源。 一个 NIC 只能与一个 VM 关联,但您可以将多个 NIC 添加到一个 VM(取决于 VM 大小)。你可以参考这个official document

    因此,如果您希望所有 VM 使用相同的 NIC,这是不可能的。

    根据 Azure 限制文档,每个网络接口都可以支持 50 个私有 IP

    是的,一个 NIC 可以关联多个私有 IP,但这并不意味着您可以将一个 NIC 添加到多个 VM。您只能在一台 VM 上为一个 NIC 添加多个 IP。请参考这个official document

    并且能够从顶级公共通过 SSH 隧道进入其中的每一个 虚拟网络的IP?

    Azure 支持这一点,如果您的虚拟机位于同一个 VNet 中,您可以在您的虚拟机之间使用专用 IP 连接到其他虚拟机。正如大卫所说,你可以使用跳箱。您可以将Public IP 关联到一个虚拟机。然后,当您 ssh 到 Azure 上的 VM 时,您可以 ssh 同一 VNet 中具有私有 IP 的任何 VM。

    【讨论】:

    • 这是有道理的,感谢您解决 nic 到私有 IP 的问题。看起来我需要为每个 vm 制作一个 nic 并使用一个 jumpbox。
    【解决方案2】:

    使用“经典”虚拟机,您将在 xyz.cloudapp.net 命名空间中拥有多个 VM,它们都共享相同的 IP 地址。每个虚拟机的 ssh 端口都会映射到负载均衡器上的某个唯一入站端口。

    对于基于 ARM 的虚拟机,每个虚拟机都有自己的网络接口。每个 VM 具有独立的 iP。

    如果您愿意,您的虚拟机上可以根本没有任何入站流量(例如,没有分配 IP 地址)。然后部署一个暴露了 ssh 的 jumpbox,并使用同一个 vnet 的那个 jumpbox 部分。进入 jumpbox 后,您就可以通过 ssh 连接到 10 个虚拟机中的任何一个。

    【讨论】:

    • 谢谢@David。我刚刚阅读了跳箱,听起来这就是我正在寻找的。为什么每个虚拟机都需要一个网络接口呢?根据 Azure 限制文档,每个网络接口可以支持 50 个私有 IP,我不是只需要一个接口就可以支持 10 个虚拟机吗?
    猜你喜欢
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多