首页 > 解决方案 > Visual Studio 2017 和远程调试器 Msvsmon 之间的 ssh 隧道

问题描述

我想从 machine1 上运行的 Visual Studio 2017 调试在 machine2 上运行的应用程序。我只能通过 ssh 连接到 machine2。从 machine1 到 machine2 的 ssh 连接工作正常。

在 machine2 上,我运行 Visual Studio 2017 远程调试器,端口号 4022,“无身份验证”和“允许任何用户调试”。

端口号可能是 4023,因为 machine2 是运行 32 位应用程序的 64 位窗口:https ://docs.microsoft.com/en-us/visualstudio/debugger/remote-debugger-port-assignments?view=vs-2017 但我不确定,因为我不知道如何检查远程调试器是 32 还是 64。

我通过在 machine1 上运行以下命令创建了一个 ssh 隧道:

ssh -L 4022:localhost:4022 machine2user@machine2IP

(如何创建多个隧道?隧道是双向的吗?)

在 machine1 Visual Studio 项目设置中,我将远程调试器设置为“远程(无身份验证)”并定位到 localhost:4022。

设置

我可以看到在 machine2 远程调试器中, machine1user 连接。在 machine1 Visual Studio 中,我可以看到 machine2 上运行的进程。

但是当我尝试附加到我的 exe 进程时,我得到:

错误信息

machine1 上的防火墙规则允许任何 ssh 流量和 4022,4023 流量。machine2 上的防火墙规则由远程调试器安装自动设置。

如何让 machine1 上的 Visual Studio 监听来自 machine2 的远程调试器流量?(我猜这可能是问题所在)。

我已经在这里检查了类似的问题,但没有任何帮助。

标签: sshvisual-studio-2017remote-debuggingportforwardingssh-tunnel

解决方案


我通过使用端口 4023 创建隧道来解决它:

ssh -L 4023:localhost:4023 machine2user@machine2IP


推荐阅读