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 $gateway
al archivo $server
. Entonces lo mejor que puedo hacer es:
ssh $gateway (no password necessary)
ssh $server (supply password manually)
Mi pregunta es: ¿puedo utilizar sshpass
algún otro método para proporcionar la contraseña en el segundo salto? No tengo privilegios para instalar sshpass
ni ningún otro software en la $gateway
má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á sshpass
desde su host local.