【问题标题】:SSH access to Linux VMSS without using NAT Inbound Rules/Ports不使用 NAT 入站规则/端口的 SSH 访问 Linux VMSS
【发布时间】:2020-07-30 15:47:08
【问题描述】:

我有一个 Linux VMSS,我可以使用负载平衡器上定义的入站 NAT 规则访问其 VM。

现在,我有新的安全要求阻止我使用某些端口。因此,我不能再使用 NAT 端口(我目前使用模式 5000*,因此端口看起来像 50000、50001 等)。我想做的是能够使用端口 22 进行 SSH,所以不要做类似ssh -p 50000 myuser@PIP 的事情,而是做ssh myuser@PIP

我尝试通过添加负载均衡器规则来完成此操作(认为它的工作方式类似于负载均衡器无需指定端口即可在端口 80 上分配 Web 流量的方式)。我创建了这样的规则:

az network lb rule create   --resource-group MyResourceGroup   --name MyLBRuleName   --lb-name MyLBName   --backend-pool-name MyBackendPoolName   --backend-port 22   --frontend-ip-name loadBalancerFrontEnd   --frontend-port 22   --protocol tcp

那没用。

那么,如何不使用 NAT 端口进行 SSH?

【问题讨论】:

    标签: azure ssh azure-vm-scale-set


    【解决方案1】:

    默认情况下,当您创建 VMSS 并选择为其创建新的负载均衡器时,Azure 将为所有 VMSS 实例创建入站 NAT 规则。这样你就可以通过负载均衡器的公网IP和映射端口如50000访问VMSS实例。这样你就可以随心所欲地SSH到特殊实例了。

    根据问题,您希望在不使用 NAT 规则的情况下通过 SSH 连接到实例。当然,这是可能的。您可以为端口 22 创建探测,然后为端口 22 和 22 后端端口创建负载均衡器规则。这样,您还可以通过 SSH 连接到 VMSS 实例。但是,当您使用这种方式时,就会出现问题。只有一个负载均衡器规则。如果您有多个实例,该规则将平衡所有实例的入站流量。但是对于 SSH,当您第一次连接到其中一个 VMSS 实例时,它会将实例的主机密钥添加到文件 ~/.ssh/know_hosts 中。当平衡器规则将流量平衡到另一个实例时,它将无法验证主机密钥。这意味着您只能通过 SSH 连接到一个实例,除非您删除文件 ~/.ssh/know_hosts 中的主机密钥。

    根据上述情况,我建议您在通过 SSH 连接到特殊实例时使用入站 NAT 规则。

    【讨论】:

      猜你喜欢
      • 2022-06-30
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 2020-08-10
      • 1970-01-01
      相关资源
      最近更新 更多