如何发出SSH命令

时间:2015-12-11 12:15:09

标签: c# ssh.net

我正在使用带有SSH.NET的C#。

我想发出一个PWD命令,但找不到任何文档或帮助。我不知道如何使用'SshClient'类。

更新 我也尝试使用下面的代码试验SshClient类,但它什么也没做,既没有任何错误也没有任何异常。

ConnectionInfo ConnNfo = new ConnectionInfo("FTPHost", 22, "FTPUser",
new AuthenticationMethod[]{

   // Pasword based Authentication
   new PasswordAuthenticationMethod("FTPUser","FTPPass")
   }                
   );

using (var ssh = new SshClient(ConnNfo))
{
    ssh.Connect();                
    if (ssh.IsConnected)
    {                    
         string comm = "pwd";
         using (var cmd = ssh.CreateCommand(comm))
         {
            var returned = cmd.Execute();
            var output = cmd.Result;
            var err = cmd.Error;
            var stat = cmd.ExitStatus;
         }
     }
   ssh.Disconnect();
}

什么都没发生。既不是错误也不是例外。在Visual Studio控制台上,我得到以下输出。

  

* SshNet.Logging详细:1:SendMessage到服务器'ChannelRequestMessage':'SSH_MSG_CHANNEL_REQUEST:#152199'。

     

SshNet.Logging详细:1:来自服务器的ReceiveMessage:   'ChannelFailureMessage':'SSH_MSG_CHANNEL_FAILURE:#0'。*

在ssh.RunCommand方法调用时,程序进入某种睡眠状态(或等待大约1分钟)。 sshCommand.Result和sshCommand.Error变量为空。

2 个答案:

答案 0 :(得分:1)

这是一个简单的例子 - 一种方法。

string host = "myhost";
string user = "root";
string pwd = "#secret#!"; // Don't use hardcoded plain-text passwords if possible - for demonstration only.

using (PasswordAuthenticationMethod auth = new PasswordAuthenticationMethod(user, pwd))
{
    ConnectionInfo connection = new ConnectionInfo(host, user, auth);
    using (var ssh = new SshClient(connection))
    {
        ssh.Connect();
        SshCommand sshCommand = ssh.RunCommand("pwd");
        Console.WriteLine("Command execution result: {0}", sshCommand.Result);
    }
}

请注意,如果指定了无效命令(例如“pwdxxxx”),则不会出现异常,但会出现错误,该错误将存储在SshCommand.Error字符串中。

另请注意,这使用SSH PasswordAuthentication,这可能未在您的SSH配置中启用。

答案 1 :(得分:0)

尝试查看SSH.NET的文档:

SSH.NET at CodePlex

Code sample for executing a command(推荐)

Help file.CHM