如何无需逐个白名单IP,用Azure Pipelines托管代理部署至受限Linux VM?
解决Azure Pipelines托管代理部署到受限Linux虚拟机的方案
除了你提到的自托管代理,还有以下几种可行方案:
1. 托管代理接入虚拟机所在虚拟网络(VNet)
将Microsoft托管代理部署到目标Linux虚拟机所在的Azure虚拟网络中,让代理与虚拟机处于同一内网环境,无需通过公网IP访问。具体可通过配置Azure Pipelines的私有端点或启用托管代理的VNet隔离功能实现,代理和虚拟机之间的通信走内网链路,完全不需要设置公网IP白名单。
2. 使用跳转机(Jump Box)中转部署
准备一台已加入虚拟机白名单的跳转机作为中间节点,在Pipeline流程中先建立托管代理到跳转机的SSH连接,再通过跳转机的内网通道访问目标虚拟机完成部署。比如在Pipeline步骤中执行SSH隧道命令,将部署流量通过跳转机转发到目标VM,避免直接暴露托管代理的公网IP。
3. 利用Azure DevOps部署组(Deployment Groups)
在目标Linux虚拟机上安装部署组代理,该代理会主动向Azure Pipelines服务发起连接,而非由托管代理主动访问虚拟机。部署任务由VM上的部署组代理拉取并执行,托管代理无需直接与VM通信,自然不需要将其IP加入白名单。
4. 动态添加/移除托管代理IP到白名单
通过Pipeline步骤自动获取当前托管代理的公网IP,临时添加到虚拟机的网络安全组(NSG)白名单中,部署完成后再移除该IP规则。示例操作步骤:
- 执行
curl ifconfig.me命令获取当前代理的公网IP - 用Azure CLI命令
az network nsg rule create添加允许该IP访问VM的规则 - 执行部署任务
- 用
az network nsg rule delete移除临时添加的规则
内容的提问来源于stack exchange,提问作者cloudlearner
相关产品推荐
相关产品推荐

