Como usar o sshpass para fornecer uma senha no segundo ssh hop

2

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

Eu tenho que passar por uma máquina intermediária (vamos chamá-lo de $gateway ) para alcançar meu $server . Então, meu fluxo de trabalho típico é:

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

Eu sou capaz de configurar a autenticação de chave pública SSH no salto para o $gateway , mas 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 pergunta é: posso usar sshpass ou algum outro método para fornecer a senha no segundo salto? Eu não tenho privilégios para instalar o sshpass ou qualquer outro software na máquina $gateway .

    
por Marcus Junius Brutus 01.11.2016 / 21:56

2 respostas

0

Use ProxyCommand :

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

Ele executará o sshpass do seu host local.

    
por 01.11.2016 / 22:36
1

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
    
por 01.11.2016 / 22:46

Tags