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.


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 albert@gateway.uibk.ac.at" root@hidden.uibk.ac.at 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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.