Como usar o sshpass para conexão encadeada?

4

Eu tenho duas máquinas de cliente $gatewaye $server, a segunda só é acessível a partir da primeira. A autenticação de chave pública não está disponível nos dois sistemas. Portanto, para executar alguns $commandno servidor, preciso executar ssh $gateway ssh $server $commande digitar duas senhas. Posso usar sshpass, mas ele manipulará apenas a primeira conexão e ainda preciso digitar a segunda senha manualmente.

Como posso tornar o acesso ssh completamente não interativo (sem inserir manualmente as senhas) ao servidor?

A única maneira que vejo é usar túneis, mas eles são difíceis de manter vivos por causa da conexão instável à Internet.

Equidamóide
fonte
Que tipo de um administrador desliga auth de chave pública .. (talvez os servidores têm algo mais habilitado, como gssapi?)?
grawity
Eu sei que alguém vai perguntar isso =)
Equidamoid
É um sistema incorporado muito específico, talvez exista uma maneira de ativar as teclas, mas eu não quero tocar em nada, exceto nas coisas que me foi permitido explicitamente tocar.
Equidamóide

Respostas:

4

Experimentar:

ssh -oProxyCommand="ssh -W %h:%p $gateway" $server command

Por exemplo:

ssh -oProxyCommand="ssh -W %h:%p [email protected]" [email protected] command

Isso usará o proxy da conexão ssh para $serversobre outro sshcomando, sem realmente criar um túnel. Isso garante que os dois clientes ssh sejam executados localmente, usando o sshpass.

Albert Peschar
fonte
11
Ótimo! Obrigado! (para usar com sshpassum só precisa substituir sshcom sshpass -p <corresponding_password> ssh)
Equidamoid
Opa, eu encontrei algo parecido ssh $gateway rsync $file $server:. Alguma idéia de como fazê-lo funcionar?
Equidamóide
Se $ file for local, você poderá usar a opção -e do rsync para usar um comando ssh diferente. Basta verificar o manual usando man rsync.
Albert Peschar
Não é não. É colocado $gateway. Conexão localhost<-> $gatewayé terrivelmente lento, então 'baixar o arquivo para o meu laptop e, em seguida, colocá-lo para o servidor' não é uma opção
Equidamoid
sshpass -p $password $gateway rsync -e "sshpass -p $password" $file $server:?
Albert Peschar