2

我尝试plink.exe从 C# 应用程序启动(PuTTY Link,PuTTY 的命令行实用程序/版本)以建立 SSH 反向隧道,但是一旦我传递了正确的参数,它就不再起作用

这意味着什么?以下按预期工作:它打开一个命令行窗口,显示我忘记传递-pw参数退出的密码,并显示提示。我知道它有论据,因为它特别要求我没有提供的一件事。

Uri uri = omitted;
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "cmd";
info.Arguments = "/k \"C:\\Program Files (x86)\\PuTTY\\plink.exe\" -R 3389:" + uri.Host + ":" + uri.Port + " -N -l username -pw"; // TODO pwd
Process p = Process.Start(info);

我尝试plink.exe直接调用而不是直接调用相同的想法cmd.exe /k,但窗口立即关闭,这对于寻找错误来说是不幸的。

但是当我在参数中传递密码时,plink.exe显示程序帮助(显示可用参数)并退出:

Uri uri = omitted;
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "cmd";
info.Arguments = "/k \"C:\\Program Files (x86)\\PuTTY\\plink.exe\" -R 3389:" + uri.Host + ":" + uri.Port + " -N -l username -pw secretpassword";
Process p = Process.Start(info);

没有迹象表明缺少参数。cmd /k和变体都plink.exe不起作用(后者立即关闭,因此没有关于不同行为的信息)。

当我使用相同参数从 Windows 7 开始菜单启动器启动应用程序时,它会打开一个cmd.exe窗口并根据请求建立连接。

怎么了?有没有办法plink.exe注意到它没有在真正的外壳中运行?如果是,我该如何规避它,就像“开始”菜单“提示”一样?

我希望这个问题在 SO 上是正确的,因为它虽然专门针对单个应用程序,但围绕着以编程方式成功启动它。

4

1 回答 1

0

Yes, this web page suggests that Putty gets edgy about non-interactive logons. If the suggested workaround doesn't help, I recommend you ask questions about it at a Putty support forum or Superuser.com. It's got otherwise nothing to do with the Process class or the C# language.

于 2010-05-19T13:27:21.297 回答