我有一个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?
发布于 2020-07-30 15:47:08
默认情况下,当您创建VMSS并选择为其创建新的负载平衡器时,Azure将为所有VMSS实例创建入站NAT规则。这样您就可以通过带map端口的负载均衡器的公网IP访问VMSS实例,如50000。通过这种方式,您可以根据需要通过SSH连接到特定的实例。
在问题中,您希望在不使用NAT规则的情况下通过SSH访问实例。当然,这是可能的。您可以为22端口创建探测,然后为具有22个后端端口的22端口创建负载均衡规则。这样,您还可以通过SSH连接到VMSS实例。但是当你以这种方式使用时,这里有一个问题。只有一个负载均衡规则。如果您有多个实例,该规则将均衡所有实例的入站流量。但是对于SSH,当您第一次连接到某个VMSS实例时,它会将该实例的主机密钥添加到文件~/.ssh/know_hosts中。当均衡器规则均衡到另一个实例的流量时,它将无法验证主机密钥。这意味着您只能通过SSH连接到一个实例,除非您删除了~/.ssh/know_hosts文件中的主机密钥。
根据以上情况,建议您在SSH进入特殊实例时使用入站NAT规则。
https://stackoverflow.com/questions/63159251
复制相似问题