Eu não acho que sua configuração seja a mesma do one-liner, parece mais com isso:
ssh -o ProxyCommand='sshpass -p mypassword ssh -o ProxyCommand="ssh gateway -W %h:%p" h_act' myusername@myip
i.e. você tem o sshpass
em execução dentro de um ProxyCommand.
Mas não acho que isso funcione, sshpass
encapsula o cliente ssh
em um pseudo-terminal, ocultando o fato de que a senha realmente vem de um arquivo ou algo diferente da entrada do usuário de um terminal. Para fazer isso, ele precisa ser executado antes da execução do ssh
client.
Se o seu primeiro one-liner funcionar, mas você simplesmente não sentir vontade de digitar o sshpass
de cada vez, você pode envolvê-lo em um shell script:
#/bin/sh
sshpass -f passwordfile ssh -o ProxyCommand="ssh gateway -W %h:%p" "$@"
Em seguida, execute algo como sshscript myusername@myip
.
Como um aparte, não use sshpass -p
, ele tornará a senha visível em ps
output enquanto o ssh
client (e sshpass
) for executado. É melhor usar sshpass -e
para passar o pw pelo ambiente ou sshpass -f file
para lê-lo de um arquivo.