1

我似乎无法让这个图书馆工作。我正在做一些非常简单的事情,但我仍然无法做到。

            client.Connect();
            client.RunCommand("sudo passwd test");
            Thread.Sleep(1000);
            client.RunCommand("testtest");
            Thread.Sleep(1000);
            client.RunCommand("12345");
            Thread.Sleep(1000);
            client.RunCommand("12345");
            bool primera = true;
            client.Disconnect();

如果我尝试使用刚刚发布的凭据登录测试失败。但是,如果我通过终端通过普通 SSH 执行相同的命令,我可以登录。为什么 SSH.NET 不执行这些命令?

4

1 回答 1

3

问题是因为你运行后client.RunCommand("sudo passwd test");一个程序正在运行,等待输入。直到程序返回后,该RunCommand方法才会真正运行命令。

我在尝试运行时遇到了同样的问题su - <login>并找到了以下解决方法...

Shell = Client.CreateShellStream("xterm", 80, 24, 800, 600, 1024);

Reader = new StreamReader(Shell);
Writer = new StreamWriter(Shell);

Writer.AutoFlush = true;

Writer.Write("su - " + login2 + "\n");

while (true)
{
    var output = Reader.ReadLine();

    if (output.EndsWith("Password: "))
    {
        break;
    }
}

Writer.Write(password2 + "\n");
于 2014-03-17T03:31:43.580 回答