Как обработать срок действия пароля в SSH.net

Я использую SSH.net для подключения к своему Linux. Срок действия пароля истекает каждые 30 дней. Одним из требований является автоматический сброс пароля.

Но это не удалось.

В response.error всегда указана ошибка "ПРЕДУПРЕЖДЕНИЕ. Срок действия вашего пароля истек.\ N Изменение пароля требуется, но TTY недоступен.\ N"

Пример кода, как показано ниже

class Program { String host = "host"; int port = 22; String username = "user"; String password = "passwd"; String newpassword = "newpasswd";

    PasswordConnectionInfo connectionInfo;

    void HandlePasswordExpired(Object sender, AuthenticationPasswordChangeEventArgs e)
    {
        e.NewPassword = UTF8Encoding.UTF8.GetBytes(newpassword);
    }


    void Init()
    {
        connectionInfo = new PasswordConnectionInfo(host, username, password);

        connectionInfo.PasswordExpired += HandlePasswordExpired;

    }

    void TestConnection()
    {
        try
        {

            using (var client = new SshClient(connectionInfo))
            {
                client.Connect();
                var resp = client.RunCommand("ls -l /");
                Console.WriteLine("Resp -> {0}", resp.Result);
                client.Disconnect();
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
    }

    static void Main(string[] args)
    {
        Program prog = new Program();
        prog.Init();
        prog.TestConnection();
    }
}

0 ответов

Другие вопросы по тегам