关于连接Azure私有IP Ubuntu VM及访问其上Web应用的技术咨询
问题解答
1. 连接私有IP虚拟机的其他方案
除了Azure Bastion,还有以下几种可行方案:
- VPN路由校验与修正:你提到已连接企业VPN但仍无法访问,核心问题大概率是路由配置缺失。检查本地设备路由表,确保Azure虚拟机所在VNET的私有IP段路由指向企业VPN网关;同时确认Azure VPN网关已将VNET路由正确发布到本地网络,完成后即可直接通过SSH连接虚拟机私有IP。
- 跳转机(Jump Box)部署:在同一VNET内部署一台带公网IP的虚拟机(或通过Bastion连接该跳转机),先登录跳转机,再从跳转机SSH到目标私有IP虚拟机。需配置跳转机的NSG规则:允许本地来源访问22端口,同时允许跳转机访问目标虚拟机的22端口。
- Azure CLI内置SSH代理:使用Azure CLI的代理功能直接连接,无需虚拟机有公网IP,命令格式:
前提是Azure CLI拥有对应资源权限,且虚拟机已配置SSH密钥或启用Azure AD登录。az vm ssh --name <VM_NAME> --resource-group <RG_NAME> --proxy-ssh - 自定义SSH端口转发:通过可访问的中间节点(如跳转机)建立隧道,将本地端口映射到目标虚拟机的22端口,示例命令:
之后本地执行# 本地端口2222映射到目标VM的22端口 ssh -L 2222:<目标VM私有IP>:22 <跳转机用户名>@<跳转机公网IP>ssh localhost:2222即可连接目标虚拟机。
2. 访问同一虚拟机上的Web应用(host:port)
根据场景不同,可选择以下方案:
- VPN直接访问:确保VPN路由配置正确后,直接在本地浏览器或客户端工具中输入
http://<目标VM私有IP>:<端口>。需提前确认:NSG允许该端口的入站流量(来源可设为VPN网段或VNET内部),且虚拟机本地防火墙(如ufw)已开放对应端口。 - Azure Bastion端口转发:利用Bastion的端口转发功能映射本地端口到虚拟机的Web端口,命令格式:
执行后访问az network bastion tunnel --name <BASTION_NAME> --resource-group <RG_NAME> --target-resource-id <VM资源ID> --port <Web应用端口> --local-port <本地端口>http://localhost:<本地端口>即可访问Web应用。 - 跳转机端口转发:通过跳转机建立端口转发,将本地端口映射到虚拟机的Web端口,示例命令:
之后访问ssh -L 8080:<目标VM私有IP>:<Web端口> <跳转机用户名>@<跳转机公网IP>http://localhost:8080即可连接到虚拟机上的Web应用。 - Azure应用网关(Application Gateway):如果Web应用需要对外提供服务,可部署应用网关到同一VNET,将后端池配置为目标虚拟机的私有IP和Web端口。通过应用网关的公网IP或自定义域名访问Web应用,此方案无需暴露虚拟机公网IP,还能提供负载均衡、WAF防护等功能。
内容的提问来源于stack exchange,提问作者itsavy
相关产品推荐
相关产品推荐

