.NET 作为来自另一个域的另一个用户进行远程调试?

Posted

技术标签:

【中文标题】.NET 作为来自另一个域的另一个用户进行远程调试?【英文标题】:.NET remote debugging as another user from another domain? 【发布时间】:2011-12-15 20:19:06 【问题描述】:

我正在尝试通过 Visual Studio 2010 进行远程调试。但我无法告诉调试器在远程计算机上使用另一个(远程)帐户。 (不要使用我的帐户。)

有什么提示吗?

更新:我的计算机上没有远程帐户(它在另一个域中)。所以我不能使用runas

【问题讨论】:

右键运行是否无效? 您是否考虑以其他用户身份通过​​runas 运行VS 2010? 感谢提示,请参阅我的更新。 只是检查-您是否在调试监视器中正确配置了远程计算机上的权限(msdn.microsoft.com/en-us/library/ms164722.aspx)...我打算回答“使用未经身份验证的,但它仅适用于本机代码) . 是的,权限没问题。 【参考方案1】:

为此奋斗了很长时间。

检查一下

    两台计算机都在同一个域中,或者 VS 远程调试器和客户端 VS 以相同的用户身份运行,并且具有相同的密码。您的用户可以位于不同的域或工作组中,但登录名必须相同 机器之间需要双向无限制直接连接。

【讨论】:

广告 1:我的问题是是否可以使用来自另一个域的另一个用户? (也许使用了一些没有充分记录的解决方法。) 这不是必需的。只需在两台机器上创建拼写相同的用户名。 这需要在远程服务器上更改本地密码或降低密码策略。但也许有办法使用其他用户... 不幸的是我找不到另一种方法来做到这一点:(如果这是一个(预)生产服务器,即使远程服务器无法连接回来,您也可以要求远程创建一个调试器用户到您的 VS 机器上,您注定要失败。唯一可行的解​​决方案是广泛的日志记录和正确利用日志级别,而不会减慢生产代码的速度。【参考方案2】:

根据我的经验,远程调试设置起来很痛苦!这是我的做法(类似于您已经收到的回复):

    在远程框上,使用与您的域帐户相同的用户名和密码创建一个本地管理员用户。确保此本地用户是调试组的成员。 在本地机器上,共享 VS 中的远程调试文件夹(...\common7\ide\remote debugger) 在远程机器上,在本地机器上创建的共享中创建 msvsmon.exe 文件的快捷方式。 在远程机器上,运行快捷方式以便远程调试器启动。这可以保证您运行的是正确的远程调试版本。 从 Visual Studio 尝试使用 User@machine_name 连接到远程计算机,其中 User 是远程机器上登录用户的用户名(不是您创建的本地管理员帐户)。 您应该会看到远程调试器注册了连接。

如果这不起作用,您可能会遇到进一步的网络或权限问题。

希望有帮助!

【讨论】:

【参考方案3】:

我已经多次以另一个用户的身份跨域调试远程计算机上的进程。

首先,您需要学习如何在同一个域中调试远程进程。 @KyleMit 的 answers 完全帮助我做到了这一点。

但是,对于跨域调试,您还需要在本地计算机上编辑C:\Windows\System32\drivers\etc\hosts 文件。

只需像这样添加远程计算机的IP地址:

172.172.172.172     SRV-TEST-ADRESS

地点:

172.172.172.172 - 你的远程服务器的 IP 地址 SRV-TEST-ADRESS - Visual Studio 远程调试器中的服务器名称 在远程计算机上监控

你可以通过ipconfigcmd知道你服务器的ip地址

如果您需要有关跨域调试的更多详细说明,请查看此link。

【讨论】:

【参考方案4】:

这是在黑暗中拍摄的……假设您拥有 *** 访问权限。而且我仍然不确定它会起作用。不过也许值得一试

    连接 *** 将域帐户添加为远程机器上的本地用户 查看是否可以右键单击以该帐户运行。

【讨论】:

【参考方案5】:

在远程机器上运行远程调试器监视器后,配置调试权限以允许所有人访问。当您从 Visual Studio 连接到远程计算机时,请使用以下格式作为限定符:

remote_domain\remote_user@remote_machine

远程用户是运行远程调试器的用户。 记住远程机器上的防火墙。

【讨论】:

【参考方案6】:

当您在双方都有本地帐户、拼写相同且密码相同时,我已经看到它可以工作。不够一致,我会依赖它。

您是否尝试过改用windbg?刚开始使用有点痛苦,但它可以完成工作。

【讨论】:

我正在调试 .NET 应用程序。 (我认为windbg 不支持。) 它确实支持.net!请参阅msdn.microsoft.com/en-us/library/bb190764.aspx 了解更多信息。【参考方案7】:

我还有一些事情要尝试,因为我最终可以进行远程调试,但这很棘手:

注意运行 Visual Studio 的用户,默认情况下我以管理员身份运行它,我必须以本地域用户身份运行才能连接 在这个阶段,我还不能连接到另一个域,但作为中间步骤,我输入了我域上服务器的限定符,并且能够看到这些进程 现在我将限定符更改为另一个域的 IP 地址(不需要输入 4020 端口号)并点击刷新按钮,瞧,我被提示输入另一个域上的帐户凭据 这很有效,我可以看到要连接的进程 如果没有在我的域中输入服务器的先前步骤,我无法获得登录屏幕

【讨论】:

以上是关于.NET 作为来自另一个域的另一个用户进行远程调试?的主要内容,如果未能解决你的问题,请参考以下文章

使用除 oracle 之外的另一个 linux 用户连接到 sqlplus

是否对同源域的 ajax 调用进行了预检请求?

如何在 ASP.NET Core 3.1 的另一个应用程序中包含用户管理器

显示来自远程 EC2 实例的文件列表

.net C# 将值作为查询字符串发布到带有按钮的另一个页面

前端 ASP.NET MVC4 作为一个项目,ASP.NET Web API 作为同一解决方案中的另一个项目 - 如何从前端调用 WebAPI?