我最初的理解是,Azure Bastion就像一个轻量级的 SSH(和 RDP)网关,通向同一虚拟网络上的资源(特别是 VM),而不是将完整的 VM 预配为 jumpbox。也就是说,我希望能够从公共 Internet 上的任何地方通过 SSH 连接到同一网络上的 VM:
ssh -i /path/to/private.key -J BASTION_IP user@VM_IP
BASTION_IP
与堡垒资源关联的公共 IP 地址在哪里,并且VM_IP
是堡垒子网的兄弟子网中 VM 的内部 IP 地址。
我已经在 Terraform 中使用“基本”堡垒 SKU 进行了设置,但是当我尝试连接时,它会超时。在 Azure Poral 中,有一个名为“Native Client Support”的选项(需要“标准”SKU),作为tunneling_enabled
相应 Terraform 资源中的参数公开。进行了这些更改后,我的连接仍然超时。
按照文档的兔子洞建议您必须使用 Azure CLI。事实上,我可以使用 Azure CLI 进行隧道工作——显然,SSH 扩展仅适用于 Windows——但这有点小题大做:
az login # I assume there's a way to login unattended
az account set --subscription SUBSCRIPTION_ID
az network bastion tunnel --name BASTION_NAME --resource-group RG_NAME --target-resource-id REALLY_LONG_VM_RESOURCE_ID --resource-port 22 --port 2222 &
ssh -i /path/to/private.key -p 2222 user@localhost
是否有通过 Azure 堡垒通过 SSH 连接到 Azure VM 的非专有方式?或者我对其用例的假设是否成立?
您实际上只有两种方法可以使用本地客户端通过 SSH 连接到 Bastion,并且都涉及 Azure CLI:
如果您想使用服务主体进行连接,则可以自动执行此连接,但假设您想以用户身份连接,那么必须存储用户凭据并处理 MFA 等会有点麻烦。