Tengo un dispositivo al que estoy intentando conectarme a través de SSH para automatizar su configuración. Normalmente, cuando se conecta por primera vez al dispositivo, le pide que configure una cuenta de administración local. No queremos configurar esta cuenta automáticamente, porque frustra el propósito de automatizar esta configuración.

Usando ssh.net, intenté conectarme al dispositivo, pero se rechazó la autenticación.

using (SshClient client = new SshClient("10.10.10.41", 22, username, password))
{
    client.Connect();
    SshCommand command = client.CreateCommand(newUsername)
    command.execute

    command = client.CreateCommand(newPassword)
    command.execute
}

¿Hay alguna forma de usar comandos SSH para configurar la cuenta de administrador? Debería ser tan simple como enviar un nombre de usuario y una contraseña, pero si no se autentica, no puedo enviar ningún comando.

¡Gracias!

0
jspavs 22 ene. 2021 a las 07:52

1 respuesta

La mejor respuesta

Puede esperar a que se le solicite escribir el nombre de usuario y la contraseña utilizando el método ShellStream y Expect.

using (SshClient client = new SshClient("10.10.10.41", 22, username, password))
{
    client.Connect();
    ShellStream shellStream = client.CreateShellStream(string.Empty, 0, 0, 0, 0, 0);
    shellStream.Expect("Please create a local administrator account."); // probably can be omitted
    shellStream.Expect("Username:"); // Expect has more parameters 
    shellStream.WriteLine(newUsername);
    shellStream.Expect("Password:"); // prompt to type password
    shellStream.WriteLine(newPassword);
    client.Disconnect();
}
1
user2250152 22 ene. 2021 a las 06:48