Use ProxyCommand
:
sshpass -p server_password ssh -oProxyCommand="ssh -W %h:%p $gateway" $server
Ele executará o sshpass
do seu host local.
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
.
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
Tags ssh