Como o ssh solicita uma senha quando todas as entradas e saídas são redirecionadas?

4

Na verdade, não preciso executar o comando abaixo, e estou ciente das chaves ssh se quiser fazer login sem digitar uma senha. Gostaria apenas de saber como ssh parece contornar o redirecionamento de arquivos.

Executando o seguinte comando, ssh solicita uma senha:

ssh [email protected] > /dev/null 2> /dev/null < /dev/null

Como isso funciona? stdin , stdout e stderr são todos redirecionados, mas ssh ainda consegue imprimir um prompt na minha tela e ler o que eu digito. Eu tentei adicionar os ssh arguments -t -t e -T (não ambos de uma vez), para ativar ou desativar a alocação pseudo-tty, mas não fez diferença.

Eu também tentei fechar todas as entradas e saídas dessa maneira, embora eu não saiba se eu as digitei corretamente. Ainda assim, ssh solicita uma senha:

(exec 0<&- 1<&- 2<&- 0>&- 1>&- 2>&-; ssh [email protected])
    
por yellowantphil 06.12.2014 / 18:05

1 resposta

4

Do OpenSSH readpassphrase.c, linha 75:

    /*
     * Read and write to /dev/tty if available.  If not, read from
     * stdin and write to stderr unless a tty is required.
     */

O programa lê e grava o TTY diretamente, portanto, não é possível desabilitar a entrada direta simplesmente fechando os canais de entrada e saída padrão. Você precisa dizer ao cliente SSH para usar uma senha fornecida ou fazer como sugerido por @muru.

    
por 06.12.2014 / 18:29