Azure Bastion:外部用户无法登录无公网IP的Azure VM求助
故障分析与解决方案:Azure Bastion连接无字段显示问题
可能的故障原因
- Bastion权限不足:仅分配
Reader角色无法发起Bastion连接,该角色仅具备只读访问权限,缺少连接所需的核心动作权限。 - VM未启用Azure AD登录:
Virtual Machine User Login角色依赖VM的Azure AD登录功能,若未启用该功能,权限无法生效,直接导致连接页面无输入字段。 - 权限分配范围错误:权限分配的范围(如仅资源组/订阅级)未精准覆盖目标VM、NIC或Bastion资源,或存在权限继承冲突。
- Bastion资源状态异常:Bastion主机处于未运行、故障或配置错误状态,无法正常提供连接服务。
必备权限清单
确保外部用户拥有以下最小权限:
- 目标VM:
Virtual Machine User Login角色(直接分配至VM资源) - VM关联NIC:
Virtual Machine User Login角色(直接分配至NIC资源) - Azure Bastion主机:
Bastion User角色(或自定义角色包含Microsoft.Network/bastionHosts/connect/action权限)
分步排查方法
修正Bastion权限配置
- 替换原
Reader角色为Bastion User角色,该角色包含发起Bastion连接的必要动作权限。 - 用Azure CLI确认权限是否生效:
检查输出中是否包含az role assignment list --assignee <外部用户邮箱> --resource-group <资源组名称> --resource-type Microsoft.Network/bastionHostsMicrosoft.Network/bastionHosts/connect/action权限条目。
- 替换原
确认VM已启用Azure AD登录
- Windows VM:在Azure门户VM的安全性 > Azure AD登录页面,确认已启用"使用Azure Active Directory登录虚拟机"选项。
- Linux VM:检查是否已安装Azure AD登录扩展,验证命令:
若未安装,执行扩展安装命令:az vm extension show --resource-group <资源组名称> --vm-name <VM名称> --name AADLoginForLinuxaz vm extension set --resource-group <资源组名称> --vm-name <VM名称> --name AADLoginForLinux --publisher Microsoft.Azure.ActiveDirectory
检查权限分配范围
- 确保所有权限均直接分配至对应资源(VM、NIC、Bastion),而非仅分配至父资源组或订阅(避免继承失效)。
- 在Azure门户的IAM页面,分别查看VM、NIC、Bastion的权限分配列表,确认外部用户的角色已正确添加且无权限拒绝规则。
验证Bastion资源状态
- 进入Bastion主机的Azure门户页面,查看概述中的状态是否为"运行中"。
- 检查Bastion是否关联至VM所在VNet,且子网为专用的
AzureBastionSubnet(子网大小需满足/27或更大)。
排除客户端干扰
- 让用户使用隐私/无痕浏览器重新尝试连接,排除浏览器缓存或插件干扰。
- 确认用户使用的浏览器为Chrome、Edge、Firefox等Bastion支持的主流浏览器。
内容的提问来源于stack exchange,提问作者cherry
相关产品推荐
相关产品推荐

