【问题标题】:How can I create an SSH connection from a C# application?如何从 C# 应用程序创建 SSH 连接?
【发布时间】:2026-01-16 05:05:01
【问题描述】:

我正在创建一个与 Citrix XEN 服务器交互的 GUI。我不知道如何在 XEN 服务器上的寡妇系统上的应用程序中执行命令。 我在考虑使用 SSH,但我又不知道怎么做。有没有人有如何做到这一点的例子?用户按下按钮时如何建立 SSH 隧道?我希望能够运行命令 xe vm-list 然后在标签中显示输出。这只是开始我的下一个将是创建一个 VM 和名称是用户想要的,但现在我只需要弄清楚如何在 XEN 服务器上执行命令。

【问题讨论】:

标签: c# ssh


【解决方案1】:

我使用 SharpSSH 非常成功。

这个可以从http://www.tamirgal.com/blog/page/SharpSSH.aspx下载。

【讨论】:

  • 你有如何设置的例子吗?
  • 来自 sourceforge 的源文件有一个 Examples\sharpssh_samples 文件夹,其中包含许多详细的示例。
  • 这不是我想要的。我希望它对用户隐藏。
  • 这些类允许您在没有控制台的情况下连接 SSH 服务器。 SshExec 类有一个 RunCommand 方法可以做到这一点。
  • 我也用过 SharpSSH,它不是很可靠...我必须自己修复一些错误才能使其正常工作
【解决方案2】:

给自己找一个 ssh 组件可以让你做更有意义的事情,但在基础层面,你可以这样做:

public void ExecuteExternalCommand(string command)
{
 try
 {
  // process start info
  System.Diagnostics.ProcessStartInfo processStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
  processStartInfo.RedirectStandardOutput = true;
  processStartInfo.UseShellExecute = false;
  processStartInfo.CreateNoWindow = true; // Don't show console

  // create the process
  System.Diagnostics.Process process = new System.Diagnostics.Process();
  process.StartInfo = processStartInfo;
  process.Start();

  string output = process.StandardOutput.ReadToEnd();
  Console.WriteLine(output);
 }
 catch (Exception exception)
 {
  //TODO: something Meaninful
 }
}

这将让您通过 cmd.exe 接口运行任意外部可执行文件,然后对其进行响应。

这里有一些链接:

【讨论】: