Acabei indo por outra rota, devido a sshpass
não trabalhar com a configuração do meu trabalho e não queria usar outro comando para fazer o login. Eu usei uma combinação de expect
, o parâmetro de configuração ssh LocalCommand
e um script Node para obter minha senha. Veja É possível sair do SSH no LocalCommand? também.
Essencialmente, minha solução é esta:
-
Configurar um host ssh, por exemplo
Host work
com umHostName
que aponta para minha máquina, por exemploHostName localhost
-
Adicione o
PermitLocalCommand yes
e oLocalComamnd <path to my expect script>; kill $PPID
aoHost
config -
Use o script de expectativa para:
-
execute meu script do Node, que receberá minha senha e a salvará em uma variável
-
Use essa senha salva durante a expectativa e, em seguida, interaja (veja abaixo)
-
-
Quando a sessão SSH terminar, o
LocalCommand
executará okill $PPID
, o que me retornará à minha sessão de terminal original.
Aqui está o meu exemplo expect
script:
set password [exec node <script>]
spawn -noecho ssh <work_host>
expect "Password"
send "${password}\n"
interact