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, $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 dúvida é: posso usar sshpass
algum outro método para fornecer a senha no segundo salto? Não tenho privilégios para instalar sshpass
ou qualquer outro software na $gateway
má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 sshpass
a partir do seu host local.