C#发送一个简单的SSH命令

时间:2012-06-23 12:12:14

标签: c# ssh

我是一名年轻的学生,本周接受了我的家庭作业。这很难 对我来说因为我必须创建一个能够连接到SSH服务器的程序 并发送commamd" etc / init.d / networking restart"。

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

我理解C#的基础知识(循环,等等......)。

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

screenshot of ui

screenshot of code

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

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

5 个答案:

答案 0 :(得分:84)

前一段时间我在一个项目中使用了SSH.Net,对此非常满意。它还附带了一个很好的文档,其中包含大量有关如何使用它的示例。

原始包裹网站仍然可以找到here,包括文档(目前GitHub上没有)。

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

using (var client = new SshClient("hostnameOrIp", "username", "password"))
{
    client.Connect();
    client.RunCommand("etc/init.d/networking restart");
    client.Disconnect();
}

答案 1 :(得分:7)

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

答案 2 :(得分:4)

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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();
}