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,