Por que posso ver os prompts de senha redirecionando a saída?

6

Então, eu tenho um comando que estou emitindo que é essencialmente 'ssh'ing em vários hosts:

 command 2&>1 | grep "desired output" 

De vez em quando, no meio do comando, ele é executado em um host no qual não tenho a configuração de minhas chaves. Quando isso acontece, recebo essa saída:

 Password: 

Como estou redirecionando STDERR para STDOUT e, em seguida, filtrando STDOUT para fornecer apenas "output desejado" (que não inclui "Password:"), como o prompt de senha está sendo apresentado para mim?

    
por Matt Simmons 21.03.2013 / 15:43

1 resposta

8

ssh abre / dev / tty para ler e gravar para solicitar a senha.

Eu acho que este é um recurso de segurança, a entrada tem que ser do tty ao invés de stdin.

Se você executar strace ssh <host> strace, mostrará as chamadas do sistema que o comando está fazendo.

Eu recebo:

open("/dev/tty", O_RDWR|O_LARGEFILE)    = 4
...
write(4, "dave@host"..., 16dave's password: ) = 16
read(4,
    
por 21.03.2013 / 15:52