排查 Azure 虚拟机的远程桌面连接问题
与基于 Windows 的 Azure 虚拟机 (VM) 的远程桌面协议 (RDP) 连接可能会因各种原因而失败,使用户无法访问 VM。 问题可能出在 VM 上的远程桌面服务、网络连接或主计算机上的远程桌面客户端。 本文介绍解决 RDP 连接问题的一些最常见方法。
如果对本文中的任何观点存在疑问,可以联系 MSDN Azure 和 CSDN Azure上的 Azure 专家。 或者,也可以提交 Azure 支持事件。 请转到 Azure 支持站点并选择“获取支持”。
快速故障排除步骤
在执行每个故障排除步骤之后,请尝试连接到 VM:
- 重置远程桌面配置。
- 检查网络安全组规则/云服务终结点。
- 查看 VM 控制台日志。
- 重置 VM 的 NIC。
- 重置 VM 密码。
- 重新启动 VM。
- 重新部署 VM。
如需更详细的步骤和说明,请继续阅读余下的内容。 请确保本地网络设备(如路由器和防火墙)未阻止出站 TCP 端口 3389,如 RDP 详细故障排除方案中所述。
Tip
如果门户中 VM 的“连接”按钮不可用,并且用户未通过 Express Route 或站点到站点 VPN 连接来连接到 Azure,则必须先为 VM 创建并分配一个公共 IP 地址,然后才能使用 RDP。 详细了解 Azure 中的公共 IP 地址。
排查 RDP 问题的方法
可以使用以下方法之一,对使用 Resource Manager 部署模型创建的 VM 进行故障排除:
- Azure 门户 - 如果需要快速重置 RDP 配置或用户凭据,并且没有安装 Azure 工具,则很适合使用此方法。
- Azure PowerShell - 如果很熟练 PowerShell 提示符,可以使用 Azure PowerShell cmdlet 快速重置 RDP 配置或用户凭据。
还可以查找有关针对使用 经典部署模型创建的 VM 进行故障排除的步骤。
使用 Azure 门户进行故障排除
在执行每个故障排除步骤之后,请尝试再次连接到 VM。 如果仍然无法连接,请尝试下一步。
重置 RDP 连接。 当“远程连接”已禁用或 Windows 防火墙规则阻止 RDP 时,此故障排除步骤可重置 RDP 配置。
在 Azure 门户中选择 VM。 在“设置”窗格中向下滚动到靠近列表底部的“支持 + 故障排除”部分。 单击“重置密码”按钮。 将“模式”设置为“仅重置配置”,然后单击“更新”按钮:

验证网络安全组规则。 可以查看生效的安全组规则,确保入站“允许”NSG 规则存在并已针对 RDP 端口(默认为 3389)设置优先级。 有关详细信息,请参阅使用有效的安全规则排查 VM 流量流问题。
检查 VM 启动诊断。 此故障排除步骤检查 VM 控制台日志,确定 VM 是否报告了问题。 并非所有 VM 都已启用启动诊断,因此,此故障排除步骤可能是可选的。
本文未介绍具体的故障排除步骤,而是指出会影响 RDP 连接的更广泛问题。 有关查看控制台日志和 VM 屏幕截图的详细信息,请参阅 Boot Diagnostics for VMs(VM 的启动诊断)。
重置 VM 的 NIC。 有关详细信息,请参阅如何重置 Azure Windows VM 的 NIC。
重置用户凭据。 不确定或者忘了凭据时,可以使用此故障排除步骤重置本地管理员帐户的密码。
在 Azure 门户中选择 VM。 在“设置”窗格中向下滚动到靠近列表底部的“支持 + 故障排除”部分。 单击“重置密码”按钮。 确保“模式”已设置为“重置密码”,然后输入用户名和新密码。 Finally, click the Update button:

重新启动 VM。 此故障排除步骤可以解决 VM 本身存在的任何基本问题。
在 Azure 门户中选择 VM,并单击“概述”选项卡。

重新部署 VM。 此故障排除步骤可将 VM 重新部署到 Azure 中的另一台主机,从而解决平台或网络的任何基本问题。
在 Azure 门户中选择 VM。 在“设置”窗格中向下滚动到靠近列表底部的“支持 + 故障排除”部分。 单击“重新部署”按钮,然后单击“重新部署”:

完成此操作后,会丢失临时磁盘数据,系统会更新与 VM 关联的动态 IP 地址。
如果仍遇到 RDP 问题,可以开具支持请求或阅读更详细的 RDP 故障排除概念和步骤。
使用 Azure PowerShell 进行故障排除
如果尚未执行该操作,请安装并配置最新的 Azure PowerShell。
以下示例使用 myResourceGroup、myVM、myVMAccessExtension 之类的变量。 请将这些变量名称和位置替换为自己的值。
Note
使用 Set-AzureRmVMAccessExtension PowerShell cmdlet 重置用户凭据和 RDP 配置。 在以下示例中, myVMAccessExtension 是在重置过程中指定的名称。 如果以前使用过 VMAccessAgent,可以使用 Get-AzureRmVM -ResourceGroupName "myResourceGroup" -Name "myVM" 检查 VM 的属性,从而获取现有的扩展名称。 若要查看名称,请查看输出的“Extensions”节中的内容。
在执行每个故障排除步骤之后,请尝试再次连接到 VM。 如果仍然无法连接,请尝试下一步。
重置 RDP 连接。 当“远程连接”已禁用或 Windows 防火墙规则阻止 RDP 时,此故障排除步骤可重置 RDP 配置。
以下示例将在
ChinaNorth位置和名为myResourceGroup资源组中重置名为myVM的 VM 上的 RDP 连接:PowerShell复制Set-AzureRmVMAccessExtension -ResourceGroupName "myResourceGroup" `
-VMName "myVM" -Location Westus -Name "myVMAccessExtension"
验证网络安全组规则。 此故障排除步骤验证网络安全组中是否存在允许 RDP 流量的规则。 RDP 的默认端口为 TCP 端口 3389。 创建 VM 时,可能不会自动创建允许 RDP 流量的规则。
首先,将网络安全组的所有配置数据分配到
$rules变量。 以下示例将在名为myResourceGroup的资源组中获取关于名为myNetworkSecurityGroup的网络安全组的信息:PowerShell复制$rules = Get-AzureRmNetworkSecurityGroup -ResourceGroupName "myResourceGroup" `
-Name "myNetworkSecurityGroup"
现在,查看针对此网络安全组配置的规则。 验证是否存在一个允许使用 TCP 端口 3389 进行入站连接的规则,如下所示:
PowerShell复制$rules.SecurityRules
以下示例显示了一个允许 RDP 流量的有效安全规则。 可以看到
Protocol、DestinationPortRange、Access和Direction已正确配置:PowerShell复制Name : default-allow-rdp
Id : /subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/securityRules/default-allow-rdp
Etag :
ProvisioningState : Succeeded
Description :
Protocol : TCP
SourcePortRange : *
DestinationPortRange : 3389
SourceAddressPrefix : *
DestinationAddressPrefix : *
Access : Allow
Priority : 1000
Direction : Inbound
如果不存在允许 RDP 通信的规则,请创建网络安全组规则。 允许 TCP 端口 3389。
重置用户凭据。 不确定或者忘了凭据时,可以使用此故障排除步骤重置指定的本地管理员帐户的密码。
首先,通过将凭据分配到
$cred变量来指定用户名和新密码,如下所示:PowerShell复制$cred=Get-Credential
接下来,更新 VM 上的凭据。 以下示例将在
ChinaNorth位置中和名为myResourceGroup的资源组中更新名为myVM的 VM 上的凭据:PowerShell复制Set-AzureRmVMAccessExtension -ResourceGroupName "myResourceGroup" `
-VMName "myVM" -Location ChinaNorth -Name "myVMAccessExtension" `
-UserName $cred.GetNetworkCredential().Username `
-Password $cred.GetNetworkCredential().Password
重新启动 VM。 此故障排除步骤可以解决 VM 本身存在的任何基本问题。
以下示例重启
myResourceGroup资源组中名为myVM的 VM:PowerShell复制Restart-AzureRmVM -ResourceGroup "myResourceGroup" -Name "myVM"
重新部署 VM。 此故障排除步骤可将 VM 重新部署到 Azure 中的另一台主机,从而解决平台或网络的任何基本问题。
以下示例重新部署
ChinaNorth位置和myResourceGroup资源组中名为myVM的 VM:PowerShell复制Set-AzureRmVM -Redeploy -ResourceGroupName "myResourceGroup" -Name "myVM"
如果仍遇到 RDP 问题,可以开具支持请求或阅读更详细的 RDP 故障排除概念和步骤。
对使用经典部署模型创建的 VM 进行故障排除
执行每个故障排除步骤后,请尝试重新连接到 VM。
重置 RDP 连接。 当“远程连接”已禁用或 Windows 防火墙规则阻止 RDP 时,此故障排除步骤可重置 RDP 配置。
在 Azure 门户中选择 VM。 单击“...更多”按钮,然后单击“重置远程访问”:

验证云服务终结点。 此故障排除步骤验证云服务中是否存在允许 RDP 流量的终结点。 RDP 的默认端口为 TCP 端口 3389。 创建 VM 时,可能不会自动创建允许 RDP 流量的规则。
在 Azure 门户中选择 VM。 单击“终结点”按钮以查看当前为 VM 配置的终结点。 验证终结点存在,它们允许 TCP 端口 3389 上的 RDP 通信。
以下示例显示了允许 RDP 流量的有效终结点:

如果不存在允许 RDP 通信的终结点,请创建云服务终结点。 允许使用 TCP 连接到专用端口 3389。
检查 VM 启动诊断。 此故障排除步骤检查 VM 控制台日志,确定 VM 是否报告了问题。 并非所有 VM 都已启用启动诊断,因此,此故障排除步骤可能是可选的。
本文未介绍具体的故障排除步骤,而是指出会影响 RDP 连接的更广泛问题。 有关查看控制台日志和 VM 屏幕截图的详细信息,请参阅 Boot Diagnostics for VMs(VM 的启动诊断)。
检查 VM 资源运行状况。 此故障排除步骤验证 Azure 平台上是否未出现任何可能影响 VM 连接的已知问题。
在 Azure 门户中选择 VM。 在“设置”窗格中向下滚动到靠近列表底部的“支持 + 故障排除”部分。 单击“资源运行状况”按钮。 A healthy VM reports as being Available:

重置用户凭据。 不确定或者忘了凭据时,可以使用此故障排除步骤重置指定的本地管理员帐户的密码。
在 Azure 门户中选择 VM。 在“设置”窗格中向下滚动到靠近列表底部的“支持 + 故障排除”部分。 单击“重置密码”按钮。 输入用户名和新密码。 最后,单击“保存”按钮:

重新启动 VM。 此故障排除步骤可以解决 VM 本身存在的任何基本问题。
在 Azure 门户中选择 VM,并单击“概述”选项卡。

如果仍遇到 RDP 问题,可以开具支持请求或阅读更详细的 RDP 故障排除概念和步骤。
排查特定的 RDP 错误
尝试通过 RDP 连接到 VM 时,可能会遇到特定的错误消息。 以下是最常见的错误消息:
- 由于没有可用于提供许可证的远程桌面授权服务器,远程会话已断开连接。
- 远程桌面找不到计算机“名称”。
- 身份验证出错。无法联系本地安全机构。
- Windows 安全性错误:凭据无效。
- 此计算机无法连接到远程计算机。
其他资源
如果未发生上述任何错误但仍无法通过远程桌面连接到 VM,请阅读详细的远程桌面故障排除指南。
- 有关用于访问 VM 上运行的应用程序的故障排除步骤,请参阅对在 Azure VM 上运行的应用程序的访问进行故障排除。
- 如果在 Azure 中使用 Secure Shell (SSH) 连接到 Linux VM 时遇到问题,请参阅对 Azure 中到 Linux VM 的 SSH 连接进行故障排除。立即访问http://market.azure.cn
排查 Azure 虚拟机的远程桌面连接问题的更多相关文章
- 通过VNC Viewer使用VMware虚拟机的远程桌面连接
本文转自:http://www.14blog.com/archives/185 要在VMware虚拟机中使用远程桌面连接?方法有两个:一种是在虚拟机中做“端口映射”,当然,这个稍显复杂(虚拟机端口映射 ...
- 详细故障排除步骤:针对 Azure 中到 Windows VM 的远程桌面连接问题
本文提供详细的故障排除步骤,用于为基于 Windows 的 Azure 虚拟机诊断和修复复杂的远程桌面错误. Important 若要消除更常见的远程桌面错误,请务必先阅读远程桌面的基本故障排除文章, ...
- 远程桌面连接Windows Azure中的Ubuntu虚拟机
默认情况下,通过Windows Azure创建的ubuntu虚拟机是不能直接连接远程桌面的,只能通过SSH终端连接. 在Windows Azure Portal中创建Ubuntu虚拟机,创建完成后添加 ...
- 使用windows远程桌面连接Windows Azure中的Ubuntu虚拟机
1.创建ubuntu虚拟机,这里同样不再赘述,创建过程和创建Windows虚拟机基本一样,只是登录可以选择密钥注入或者用户名密码(为了方便我选择了用户名密码认证),创建完成后,查看虚拟机详情中的端口信 ...
- 自定义从Azure下载回来的远程桌面连接(.rdp)文件,使其提供更多丰富功能
通常情况下,我们使用Azure的时候微软会为用户提供可连接管理虚拟机的远程桌面服务,并且支持文件实例的保存,对于Windows 系统来说,微软提供的链接文件实例就是.rdp文件. 获得.rdp文件 打 ...
- 远程桌面连接KVM虚拟机
问题描述 有些时候,由于网络存在问题,虚拟机无法获取到IP地址,无法使用spice或vnc来连接虚拟机,但是又需要连到虚拟机来排查故障 解决办法 编辑虚拟机配置 设置xml命名空间 <domai ...
- 宿主机远程桌面连接vmware中的虚拟机
参考了:http://jingyan.baidu.com/article/3052f5a1e8c56397f21f8674.html 感谢~ 宿主机安装了vmware,vmware中安装虚拟机,怎 ...
- 用Powershell启用Windows Azure上的远程桌面服务
[题外话] 某天不小心点了XX管家的自动修复,虽然及时点了取消也看到了远程桌面服务成功被关闭,但是忙完该干的事以后竟然忘记了这件事,在断开远程桌面服务之前也忘记再次打开.以至于之后几天一直以为Azur ...
- Azure VM对远程桌面登录的支持-示例
我们在开发Windows Azure的应用程序,虽然在大部分的情况下都可以使用Azure Emulator模拟器来模拟在云端计算节点(Azure VM)的执行结果,但是并不能100%模拟真正在Azur ...
随机推荐
- django notes 六:数据库 CRUD 操作
CRUD 也没什么可说的,django 提供了完善的 orm api, 直接用就行了. 我只贴几个列子,一看就明白了,自己再用用就熟了. # create b = Blog(name='Beatle ...
- log4php0.9的详细配备实例说明
一.什么是log4php: log4j在JAVA中可算是大名鼎鼎的日志开发包了,它为apche组织维护项目,VxR兄使用php来实现了log4j的功能, 目前log4php已经作为log4j的一个子项 ...
- STIL文件(DFT/IC测试方向)
相信很多工程师,特别是刚入行或准备入行的兄弟们或多或少听过测试相关的东西.如果你想做DFT工程师的,测试工程师的,而对于设计/验证工程师们如果能了解下STIL文件的原理,在和DFT/测试工程师聊技术聊 ...
- SQL注入原理讲解
1.1.1 摘要 日前,国内最大的程序员社区CSDN网站的用户数据库被黑客公开发布,600万用户的登录名及密码被公开泄露,随后又有多家网站的用户密码被流传于网络,连日来引发众多网民对自己账号.密码等互 ...
- DataSet常用简单方法
Clear移除表中所有行来清除任何数据的DataSet Clone赋值该DataSet的结构但不复制数据 Copy赋值DataSet的结构和数据 Dispose释放DataSet对象 Equals确定 ...
- word转pdf(使用office)
1.安装office软件 2.在vs中写代码 注意需要引入 Microsoft.Office.Interop.Word插件 /// <summary> /// 将word转换成pdf文件 ...
- static关键字作用
之前讲到final关键字的作用是每次面试的时候我必问求职者的两个问题之一,另外一个问题就是文本会写到的static.final和static一样,都是一个小问题可以看到一个人的基础是否扎实以及平时是否 ...
- MySQL查询小数点位数
怎么查询某个字段中小数有几位? MySQL数据库: 通过下面sql就可以查出来,有2位col*100,有3位col*1000,一次类推: ) 备注:floor:函数只返回整数部分,小数部分舍弃. Or ...
- IIS6.0+PHP5.3+mssql 配置及远程连接数据库
安装软件需求:IIS6.0.php5.3 .sqlsrv驱动.sql server ODBC驱动 所有软件压缩包下载 注意看:安装软件的环境需求,根据环境自行选择版本,例如odbc驱动老一点版本才能 ...
- SqlServer 2005升级至SqlServer 2008 解析Json 字符集问题
如果你数据库是通过sqlserver 2008以上版本创建的请绕过: 客户以前用的是sqlserver2005 创建的数据库.后来升级到 sqlserver 2008 . 有个业务用到了json查询 ...