Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ssh.net从ssh服务器检索数据时出错_C#_Ssh.net - Fatal编程技术网

C# 使用ssh.net从ssh服务器检索数据时出错

C# 使用ssh.net从ssh服务器检索数据时出错,c#,ssh.net,C#,Ssh.net,当我尝试连接到SSH服务器时(在本例中,SSH服务器是Dell服务器上的iDRAC),我不断收到以下错误: 我找到的所有东西都引用了SCP,但我没有使用SCP,因为我没有下载文件。我需要在iDRAC上运行命令以获取系统事件日志并将其显示在文本框中。下面的代码由按钮事件处理程序调用(再往下): 以及按钮事件处理程序代码: private void BtnGetSel_Click(object sender, EventArgs e) { RemoteHost

当我尝试连接到SSH服务器时(在本例中,SSH服务器是Dell服务器上的iDRAC),我不断收到以下错误:

我找到的所有东西都引用了SCP,但我没有使用SCP,因为我没有下载文件。我需要在iDRAC上运行命令以获取系统事件日志并将其显示在文本框中。下面的代码由按钮事件处理程序调用(再往下):

以及按钮事件处理程序代码:

private void BtnGetSel_Click(object sender, EventArgs e)
        {
            RemoteHost = TxtHostName.Text;
            UserName = TxtUserName.Text;
            PassWord = TxtPassWord.Text;
            SshCommand = "racadm getsel -E";
            ConnectSSH(RemoteHost, UserName, PassWord, SshCommand, out ServerResponse);
            LblServerResponse.Text = ServerResponse;
        }

由于iDRAC CLI的限制,我求助于使用plink.exe(PuTTY的一部分)通过SSH连接到它。我认为问题在于,您无法修改iDRAC上的sshd_config文件(它们将其锁定,因此出于安全原因,您无法访问底层文件系统)。Plink允许我做我想做的事情,但PuTTY需要成为应用程序安装过程的一部分。

您必须提供身份验证方法。我不确定,但我认为您应该指定身份验证方法:var methods=new List();方法.添加(新密码AuthenticationMethod(UserName,PassWord);var con=new ConnectionInfo(RemoteHost,Port,UserName,methods.ToArray());使用(var client=new SftpClient(con)){client.Connect();}您可以在库的文档中看到它的用法:Plink允许您对SSH.NET不允许的情况做什么?它允许我登录iDRAC而不会出现问题。iDRAC只不过是linux的一个小版本,但几乎不可能访问基础操作系统和更改设置,例如sshd_配置文件。什么“问题”你对SSH.NET有什么看法?你看到我上面的评论了吗?它没有解决你的“问题”吗?
public string ConnectSSH(string RemoteHost, string UserName, string PassWord, string sshCommand, out string ServerResponse)
        {            
            using (var client = new SshClient(RemoteHost, 22, UserName, PassWord))
            {                
                client.Connect();
                var cmd = client.CreateCommand(sshCommand);
                var asyncResult = cmd.BeginExecute();
                var outputReader = new StreamReader(cmd.OutputStream);
                string output;
                while (!asyncResult.IsCompleted)
                {
                    output = outputReader.ReadToEnd();
                    ServerResponse = output;
                }
                output = outputReader.ReadToEnd();
                ServerResponse = output;
                client.Disconnect();
                return ServerResponse;                
            }
        }
private void BtnGetSel_Click(object sender, EventArgs e)
        {
            RemoteHost = TxtHostName.Text;
            UserName = TxtUserName.Text;
            PassWord = TxtPassWord.Text;
            SshCommand = "racadm getsel -E";
            ConnectSSH(RemoteHost, UserName, PassWord, SshCommand, out ServerResponse);
            LblServerResponse.Text = ServerResponse;
        }