C# SSH和Telnet库

22
我正在寻找一个提供SSH和Telnet访问的C#库,并且提供相同的接口。 有什么好的选择吗?

4
他们怎么可能使用相同的界面?SSH 需要诸如用户名、私钥文件等 Telnet 没有意义的东西。我猜测,在连接建立后,你可以有一个共同的界面,只是一个双向的字节流,但连接设置却是非常不同的。 - Ben Voigt
2
当你进行搜索时,你找到了什么?为什么它们不能满足你的需求? - Mitch Wheat
2
等等,搜索?我以为在这里发帖就是在搜索了? - dotalchemy
11
稍等,SO 不是指“搜索外包”吗? - Tim Lloyd
1
@Ben:当然,根据所需的连接类型,可能会有不同的配置参数,但被迫在通信的其余部分中使用不同的API和库似乎很愚蠢。 - Gene Vincent
显示剩余3条评论
4个回答

9

我建议使用Granados作为SSH堆栈。它已经被应用在许多产品中。

我推荐这个代码项目页面作为telnet堆栈。

你也可以下载Poderosa终端模拟器。它使用Granados作为SSH堆栈,并拥有自己的telnet堆栈实现。

Poderosa非常可插拔。它提供了良好的网络堆栈抽象层。如果你没有时间编写自己的统一接口,你应该真正检查一下他们的工作。它提供了访问SSH和Telnet的相同接口,就像你想要的那样。不幸的是,它是由日本工程师编写的。所有内联注释都是用日语编写的。你可能需要花些时间来理解代码。

您也可以查看终端仿真库。由于您将处理返回自远程终端的数据,大多数终端会返回转义字符序列以进行设备控制命令、字体颜色/样式或光标移动命令。

您可能没有注意到,即使在一个简单的命令“ls -al”中,返回的内容也可能涉及一些转义字符序列。这些转义序列是为了使目录名和文件名显示为不同的颜色。

再次提醒,对于终端仿真,我找到的最好的C#库是Poderosa。如果您不必使用C#库,PuTTY具有最佳的终端仿真支持。它几乎可以识别到目前为止我见过的所有转义字符序列。

尽管我强烈建议您查看Poderosa和Granados,请注意这些项目似乎已不再活跃。即便如此,它们仍然是我见过的最好的。


3
使SSH与C#配合确实非常棘手,大多数实现要么有缺陷要么速度太慢。当我们制作SmarTTY时,我们与SharpSSH和SSH.Net进行了很多斗争,最后决定围绕libssh2制作自己的C#包装器。
尽管SmarTTY不是开源的,但如果你想在你的项目中使用其SSH库,请随时给我发电子邮件。如果有像那样的库的需求,我们可能会将其作为单独的产品发布。

我很想看看你的ssh包装器。 - Ronnie Overby
你好,伊万。我看到你还没有发布你的包装器?我能拿来在我的项目中使用吗? - Geograph

2

这个链接可能会对你有所帮助 C# Telnet Library

  • 极简Telnet
  • telnetcsharp.codeplex.com
  • xpresslearn
  • thoughtproject.com
  • dotnettelnet

1

我找不到任何同时提供telnet和ssh相同(或类似)API的东西,sharpSSH是一个很好地抽象出SSH的小型库。


4
SharpSSH已经多年没有维护了... - Paolo Tedesco
4
似乎有人接管了SharpSSH,现在可以通过NuGet获取SSH.Net。+1 - Chuck Savage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接