62

我是一名年轻的学生,这周收到了我的作业。这对我来说非常困难,因为我必须创建一个能够连接到 SSH 服务器并发送命令“etc/init.d/networking restart”的程序。

我应该用 C# 编写这个应用程序,而且我对它很陌生(刚刚从一些学校课程中学到了东西)。我还应该创建一个 GUI。

我了解 C# 的基础知识(循环、if 等...)。

我已经创建了 GUI、菜单、按钮和日志列表框。GUI = 3 个文本框(ip、用户名、密码)和一个连接按钮。

界面截图

代码截图

我正在使用 Microsoft Visual Studio 进行编码。

我的问题是:如何与我的服务器建立 SSH 连接?

4

5 回答 5

113

不久前我在一个项目中使用了SSH.Net,并且对此非常满意。它还附带了一个很好的文档,其中包含许多关于如何使用它的示例。

原始包网站仍然可以在这里找到,包括文档(目前在 GitHub 上不可用)。

对于您的情况,代码将是这样的。

using (var client = new SshClient("hostnameOrIp", "username", "password"))
{
    client.Connect();
    client.RunCommand("etc/init.d/networking restart");
    client.Disconnect();
}
于 2012-10-15T19:26:12.003 回答
9
SshClient cSSH = new SshClient("192.168.10.144", 22, "root", "pacaritambo");
cSSH.Connect();
SshCommand x = cSSH.RunCommand("exec \"/var/lib/asterisk/bin/retrieve_conf\"");
cSSH.Disconnect();
cSSH.Dispose();

//使用SSH.Net

于 2014-11-18T20:54:05.203 回答
3

SharpSSH 应该可以完成这项工作。 http://www.codeproject.com/Articles/11966/sharpSsh-A-Secure-Shell-SSH-library-for-NET

于 2012-06-23T13:03:48.787 回答
1

迟到的答案,但对我来说,不幸的是,没有一个解决方案有效。实际上,如果您需要执行多个命令,并且这些命令相互依赖(第一个命令修改了环境,例如后面的​​命令使用的变量),您必须在一个通道内执行它们。为此使用 shell 语法,例如&&or ;

using (var client = new SshClient("hostnameOrIp", "username", "password"))
{
    client.Connect();

    using (var command = client.CreateCommand("command1 && command2"))
    {
        Console.Write(command.Execute()); //Don't forget to Execute the command
    }

    client.Disconnect();
}
于 2021-06-17T08:13:52.113 回答
0

对于 .Net 核心,我在使用 SSH.net 时遇到了很多问题,而且它也被弃用了。我尝试了其他一些库,甚至是其他编程语言。但我找到了一个很好的选择。 https://stackoverflow.com/a/64443701/8529170

于 2020-10-22T21:00:13.453 回答