Como usar o sshpass para fornecer uma senha no segundo salto do ssh

Como usar o sshpass para fornecer uma senha no segundo salto do ssh

NB: isso pode parecer idêntico aesta pergunta SO. Ele está relacionado, mas não idêntico (além de estar em um site StackExchange diferente). Nessa questão o autor pede uma forma de executar um comando em um sistema distante. Nesta questão estou perguntando como abrir (e manter) um shell em duas conexões SSH.

Tenho que passar por uma máquina intermediária (vamos chamá-la de $gateway) para chegar ao meu $server. Portanto, meu fluxo de trabalho típico é:

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

Consigo configurar a autenticação de chave pública SSH no salto para o, $gatewaymas não no segundo salto para o $server. Então o melhor que posso fazer é:

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

Minha dúvida é: posso usar sshpassalgum outro método para fornecer a senha no segundo salto? Não tenho privilégios para instalar sshpassou qualquer outro software na $gatewaymáquina.

Responder1

Você pode tentar ignorar a entrada manual de senha -

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

Responder2

Usar ProxyCommand:

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

Ele será executado sshpassa partir do seu host local.

informação relacionada