Como um comando em um pipe pode ser lido em um teclado? [duplicado]

1

Eu tentei aleatoriamente executar o seguinte comando no bash 1

cat /some/file | ssh user@machine 'cat >/destination/file

Não há chaves instaladas na máquina remota, portanto, a única maneira de autenticar é com o mecanismo de senha. Eu pensei que isso não funcionaria, já que o tubo desconectará o stdin do SSH do terminal. Fiquei surpreso quando me pediram uma senha e o arquivo foi enviado com sucesso.

Alguma idéia de como o SSH é capaz de ler o teclado para solicitar uma senha, apesar de não estar conectado a ela?

1 Eu sei que existem alternativas melhores para copiar um arquivo entre duas máquinas.

    
por Nubarke 13.04.2016 / 11:39

2 respostas

1

(Open) ssh lê diretamente do tty. Veja:

por 13.04.2016 / 14:22
1
cat /some/file | ssh user@machine 'cat >/destination/file

Isso não funciona, porque ssh trunca seu stdin antes de exibir o prompt e ler uma senha (segurança). A solução possível é usar o script expect , que interage com a execução de ssh process.

    
por 13.04.2016 / 17:58