配置 Windows 防火墙进行远程调试
在受 Windows 防火墙保护的网络上,防火墙必须配置为允许远程调试。 Visual Studio 和远程调试工具尝试在安装或启动期间打开正确的防火墙端口,但可能还需要打开端口或手动允许应用。
本主题介绍如何将 Windows 防火墙配置为在 Windows 10、8/8.1 和 7 上启用远程调试;和 Windows Server 2012 R2、2012 和 2008 R2 计算机。 Visual Studio 和远程计算机不必运行相同的操作系统。 例如,Visual Studio 计算机可以运行 Windows 11,远程计算机可以运行 Windows Server 2012 R2。
注意
在不同操作系统和较旧版本的 Windows 上配置 Windows 防火墙的说明略有不同。 Windows 8/8.1、Windows 10 及更新版本以及 Windows Server 2012 设置使用单词 应用,而 Windows 7 和 Windows Server 2008 使用单词 程序。
配置用于远程调试的端口
Visual Studio 和远程调试器尝试在安装或启动期间打开正确的端口。 但是,在某些情况下,例如第三方防火墙,可能需要手动打开端口。
打开端口:
在 Windows“开始”菜单中,搜索并打开“高级安全 Windows 防火墙”。 从 Windows 10 开始,为“高级安全 Windows Defender 防火墙”。
对于新的传入端口,请选择 入站规则,然后选择 新规则。 对于传出规则,则改为选择“出站规则”。
在 “新建入站规则向导”中,选择 端口,然后选择 “下一步”。
根据下表中的端口号,选择 TCP 或 UDP。
在 特定本地端口下,输入下表中的端口号,然后选择“下一步”。
选择“允许连接”,然后选择 下一步。
选择要启用的一个或多个网络类型,包括远程连接的网络类型,然后选择 下一。
添加规则的名称(例如,
msvsmon
、IIS
或Web Deploy
),然后选择 完成。新规则应出现在“入站规则”或“出站规则”列表中,且处于选中状态。
使用 PowerShell 打开端口:
对于 Windows 防火墙,可以使用 PowerShell 命令,例如 New-NetFirewallRule。
以下示例为远程计算机上的远程调试器打开端口 4026。 需要使用的端口和路径可能有所不同。
New-NetFirewallRule -DisplayName "msvsmon" -Direction Inbound -Program "Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\Remote Debugger\x64\msvsmon.exe" -LocalPort 4026 -Protocol TCP -Authentication Required -Action Allow
以下示例为远程计算机上的远程调试器打开端口 4024。 要使用的路径可能有所不同。
New-NetFirewallRule -DisplayName "msvsmon" -Direction Inbound -Program "Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Remote Debugger\x64\msvsmon.exe" -LocalPort 4024 -Protocol TCP -Authentication Required -Action Allow
远程计算机上用于启用远程调试的端口
对于远程调试,必须在远程计算机上打开以下端口:
端口 | 传入/传出 | 协议 | 说明 |
---|---|---|---|
4026 | 传入 | TCP | 适用于 Visual Studio 2022。 有关详细信息,请参阅 Visual Studio 远程调试器端口分配。 |
4025 | 传入 | TCP | 适用于 Visual Studio 2022 和 Microsoft Azure 应用服务。 此端口仅用于从 64 位版本的远程调试器远程调试 32 位进程。 有关详细信息,请参阅 Visual Studio 远程调试器端口分配。 |
4024 | 传入 | TCP | 适用于 Microsoft Azure 应用服务。 有关详细信息,请参阅 Visual Studio 远程调试器端口分配。 |
3702 | 传出 | UDP | (可选)进行远程调试程序发现的必需项。 |
端口 | 传入/传出 | 协议 | 说明 |
---|---|---|---|
4024 | 传入 | TCP | 适用于 Visual Studio 2019 和 Microsoft Azure 应用服务。 端口号针对每个 Visual Studio 版本递增 2。 有关详细信息,请参阅 Visual Studio 远程调试器端口分配。 |
4025 | 传入 | TCP | 适用于 Visual Studio 2019 和 Azure 应用服务。 此端口仅用于从 64 位版本的远程调试器远程调试 32 位进程。 有关详细信息,请参阅 Visual Studio 远程调试器端口分配。 |
3702 | 传出 | UDP | (可选)进行远程调试程序发现的必需项。 |
如果在 工具>选项>调试中选择 使用托管兼容性模式,请打开这些额外的远程调试器端口。 调试器托管兼容性模式启用旧版 Visual Studio 2010 版本的调试器。
端口 | 传入/传出 | 协议 | 说明 |
---|---|---|---|
135, 139, 445 | 传出 | TCP | 必填。 |
137, 138 | 传出 | UDP | 必填。 |
如果域策略要求通过 Internet 协议安全性(IPsec)执行网络通信,则必须在 Visual Studio 和远程计算机上打开其他端口。 若要在远程 Internet Information Services (IIS) Web 服务器上调试,请在远程计算机上打开端口 80。
端口 | 传入/传出 | 协议 | 说明 |
---|---|---|---|
500, 4500 | 传出 | UDP | 如果域策略要求通过 IPsec 执行网络通信,则是必需的。 |
80 | 传出 | TCP | Web 服务器调试所必需的。 |
若要允许特定应用通过 Windows 防火墙,请参阅 通过 Windows 防火墙配置远程调试。
通过 Windows 防火墙允许远程调试器
配置远程调试器时,配置软件应打开正确的端口。 但是,在某些情况下,可能需要手动允许远程调试器通过防火墙。
若要允许远程调试器通过 Windows 防火墙:
在 Windows “开始”菜单中,搜索并打开 Windows 防火墙,或 Windows Defender 防火墙。
选择“允许应用通过 Windows 防火墙。
如果 远程调试器 或 Visual Studio 远程调试器 未显示在 允许的应用和功能下,请选择 更改设置,然后选择 允许其他应用。
如果 “添加应用”对话框中仍未列出远程调试器应用,请选择 浏览,然后导航到 <Visual Studio 安装目录>\Common7\IDE\Remote Debugger\<x86、x64或 Appx>,具体取决于应用的相应体系结构。 选择 msvsmon.exe,然后选择 “添加”。
在 应用 列表中,选择刚添加 远程调试器。 选择 网络类型,然后选择一个或多个网络类型,包括远程连接的网络类型。
选择“添加”,然后选择“确定”。
对远程调试连接进行故障排除
如果无法使用远程调试器附加到应用,请确保远程调试防火墙端口、协议、网络类型和应用设置都是正确的。
在 Windows “开始”菜单中,搜索并打开 “Windows 防火墙”,然后选择“允许应用通过 Windows 防火墙”。 确保 远程调试器 或 Visual Studio 远程调试器 显示在 允许的应用和功能 列表中,其中选中了正确的网络类型。 如果不对,请添加正确的应用和设置。
在 Windows “开始”菜单中,搜索并打开具有高级安全性 的 Windows 防火墙。 请确保 远程调试器 或 Visual Studio 远程调试器 显示在 入站规则 中(可选:出站规则)并且带有绿色勾选图标,并确保所有设置都是正确的。
- 若要查看或更改规则设置,请右键单击列表中的 远程调试器 应用,然后选择 属性。 使用 属性 选项卡启用或禁用规则,或更改端口号、协议或网络类型。
- 如果远程调试器应用未显示在规则列表中,添加和配置正确的端口。