Пароль SSH.NET не выполняется

Я не могу заставить эту библиотеку работать. Я делаю что-то довольно простое, но все же мне не удается это сделать.

            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 не выполняет эти команды?


person Cristian Eduardo Lehuede Lyon    schedule 17.03.2014    source источник


Ответы (1)


Проблема в том, что после запуска 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");
person MrBlue    schedule 17.03.2014
comment
Большое спасибо! Самым важным было использовать .Write(... +"\n") вместо .WriteLine(...) - person Breeze; 04.11.2015