ssh não funciona com sim

ssh não funciona com sim

Recentemente, tive que resolver um caso paralelo em que tive que adicionar uma série de impressões digitais do servidor às de um usuário known_hosts(a autorização é realizada com um par de chaves). Achei que a solução mais fácil seria apenas ligar

yes yes | ssh *login@host*

. Surpreendentemente (pelo menos para mim), isso não funciona: sshainda pergunta se deseja adicionar a impressão digital e requer entrada manual.

Minha pergunta é: por que isso acontece, como em,qual é o mecanismo subjacente a esse comportamento?

Responder1

Para este prompt, sshnão use ostdin&saída padrãostreams – para evitar que o prompt seja confundido com a entrada/saída do comando remoto. (Imagine rodar ssh host cat something.tar | tar xe, de repente, tar xreclamar de lixo em sua entrada.)

Em vez disso, sshabre o dispositivo especial /dev/tty, que sempre aponta para seu "terminal de controle", escreve o prompt lá e lê a resposta dele.


Especificamente para o seu problema, o OpenSSH vem com ssh-keyscanuma ferramenta para obter chaves públicas de vários servidores ao mesmo tempo.

ssh-keyscan host1 host2 host3 >> ~/.ssh/known_hosts

(Não tenho certeza se você quis dizer known_hostsou realmente precisava authorized_keysaqui.)


Para o caso geral, o expectutilitário pode ser usado para automatizar programas que normalmente fazem E/S via tty.

informação relacionada