我是一名年轻的学生,本周接受了我的家庭作业。这很难 对我来说因为我必须创建一个能够连接到SSH服务器的程序 并发送commamd" etc / init.d / networking restart"。
我应该用C#编写这个应用程序,而且我对它很陌生(刚刚从中学习过 一些学校课程)。我也应该创建一个GUI。
我理解C#的基础知识(循环,等等......)。
我已经创建了GUI,菜单,按钮和日志列表框。 GUI = 3个文本框(ip,用户名,密码)和一个连接按钮。
我正在使用Microsoft Vistual Studio进行编码。
我的问题是:如何建立与服务器的SSH连接?
答案 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)
SharpSSH应该做的工作。 http://www.codeproject.com/Articles/11966/sharpSsh-A-Secure-Shell-SSH-library-for-NET
答案 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();
}