Dados os requisitos, eu instalaria expect
em minha máquina local e usaria para adicionar um novo comando. Vamos chamar os hosts remotos one
e many1
, many2
e a máquina local mybox
. Algo parecido com isto (não testado)
#!/usr/bin/expect
# connect to "one"
spawn ssh username@one
# next lines shouldn't be needed, should have shared keys for "one"
expect "assword: "
# provide password for "one", ending with "\r"
send -- "the_password_for_username@one\r"
# mainloop
interact "~p" {
send "ssh manyuser@[lindex $argv 0]\r"
expect "yes/no)? " { send "yes\r" exp_continue } "assword: "
send "the_password_for_many\r"
}
Execute isso em mybox
as ./script many1
, ele conectará você a one
Então, quando você quiser se conectar a many1
, basta digitar ~p
. Ele irá executar o comando ssh, responder a pergunta "você deseja conectar" se solicitado e fornecer a senha.
É claro que os comentários padrão sobre a insegurança de armazenar senhas em scripts se aplicam. A outra desvantagem é que você precisa dedicar uma seqüência de chaves para isso. Aqui estou usando ~p
, mas você pode usar uma tecla de função.