Cómo usar sshpass para proporcionar una contraseña en el segundo salto ssh

Cómo usar sshpass para proporcionar una contraseña en el segundo salto ssh

NB: esto puede parecer idéntico aesta pregunta SO. Está relacionado pero no es idéntico (además, está en un sitio de StackExchange diferente). En esa pregunta, el autor pregunta por una forma de ejecutar un comando en un sistema distante. En esta pregunta pregunto cómo abrir (y mantener) un shell a través de dos conexiones SSH.

Tengo que pasar por una máquina intermedia (llamémosla $gateway) para llegar a mi $server. Entonces mi flujo de trabajo típico es:

ssh $gateway (supply password manually)
ssh $server (supply password manually)

Puedo configurar la autenticación de clave pública SSH en el salto $gatewayal archivo $server. Entonces lo mejor que puedo hacer es:

ssh $gateway (no password necessary)
ssh $server (supply password manually)

Mi pregunta es: ¿puedo utilizar sshpassalgún otro método para proporcionar la contraseña en el segundo salto? No tengo privilegios para instalar sshpassni ningún otro software en la $gatewaymáquina.

Respuesta1

Puede intentar ignorar la entrada manual de contraseña.

vipin@kali:~$ cat kk.sh
#!/usr/bin/expect 
    set password 1               #set password to 1 (hardcoded)
    spawn ssh kali@kali          # user and hostname is kali
    expect "password"
    send "$password\r"
    interact                     # to get the shell prompt
vipin@kali:~$ ./kk.sh            # execute it and you are in new server

Respuesta2

Usar ProxyCommand:

sshpass -p server_password ssh -oProxyCommand="ssh -W %h:%p $gateway" $server

Ejecutará sshpassdesde su host local.

información relacionada