c# - 我想从使用 c# 运行的 Windows 框中通过 ssh 运行命令

标签 c# windows unix ssh

请注意,这必须在 Windows 框上,因为我正在使用 C# 访问有关 Windows 的信息

(我需要来自 windows box 和 linux box 的信息,另外我认为制作一个没有 gui 运行的程序/脚本并在没有用户干预的情况下从 linux box 访问窗口会更加困难,如果这不是真的请告诉我,我很乐意让它在 *nix 上运行,只有访问 Windows 信息的部分在 Windows 上运行)。

有一个很好的 c# api 可以从 Windows 获取此信息,在 *nix 上它足够简单,可以运行命令并根据我的需要解析输出。

关于从 c# 使用 ssh 似乎没有太多体面的建议,sharpSSH 和 Granados 似乎多年没有更新,它们体面吗?我应该担心安全问题吗?

(我正在检索的信息并不敏感,但如果 ssh 实现可能存在未修补的安全漏洞(如果它们多年未更新)我担心有人窃取我的凭据。

是否还有其他合适的 c# ssh 库。如果命令输出很简单,我是否应该只运行 plink/putty(是否很难为 plink 运行一个 windows cmd shell,并捕获输出(有没有办法在不弹出 shell 的情况下做到这一点)?

附言虽然商业图书馆看起来不错,但我更喜欢免费的东西(如果可能的话,在成本和源代码方面是免费的)。

最佳答案

示例代码

有几个用于 C# 的商业 SSH 客户端库。以下代码显示了如何连接到 *nix 框,运行命令并使用我们的 Rebex SSH Shell 读取响应.

// create client, connect and log in  
Ssh client = new Ssh();
client.Connect(hostname);
client.Login(username, password);

// run the 'uname' command to retrieve OS info 
string systemName = client.RunCommand("uname -a");
// display the output 
Console.WriteLine("OS info: {0}", systemName);

client.Disconnect();

对于高级场景(例如交互式命令),请参阅 SSH Shell Tutorial .

引用与稳定性

您可能已经在不知不觉中使用 Rebex SSH 核心库。 Microsoft 在包括 Expression Web 和 Visual Studio 2010 在内的多种产品中使用了 Rebex SFTP(使用此 SSH 库作为传输层)。Rebex SSH Shell“只是”其之上的另一层(最值得注意的是终端模拟器)。

您可以从 http://www.rebex.net/ssh-shell.net/download.aspx 下载试用版.支持论坛使用与该站点非常相似的引擎并在 http://forum.rebex.net/ 上运行

免责声明:我参与了 Rebex SSH 的开发

关于c# - 我想从使用 c# 运行的 Windows 框中通过 ssh 运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642338/

相关文章:

c# - Convert.ToString 返回 string.empty 而不是 null

c# - 改变数组中的元素

c# - WPF 使用 MVVM : DataBinding with RelativeSource

c - 如何在 OS X/C 中获取文件的最后修改时间?

linux - Samba、其他非交互式帐户 - noshell、nologin 或空白?

c# - 如何在 LuisActionDialog 传递上下文中从一个意图跳转到另一个意图

windows - 如何从 perl 程序打开 Excel(程序,而不是文件)?

c - 如何从终端将字符传递给可执行文件?

mysql - 安装(最小)MySQL Workbench 以简单地连接两个 .csv 文件中的数据(连接???)

bash - 如何只检测我的 bash shell 脚本中的不同文件?