Resposta curta
Eu estava passando por esse problema e o problema era que havia uma política em / etc / ssh / sshd_config que estava sendo violada. O meu era que AllowUsers estava definido e eu estava tentando fazer o login como um usuário que ainda não existia no sistema.
Resposta mais longa
A resposta mais longa é que a senha estava sendo sobrescrita. Na verdade, não estava chegando tão vazio. Acontece que a primeira linha tinha um caractere de retrocesso não exibível (^ H) e uma nova linha. O comando de leitura que eu estava usando estava lendo apenas a primeira linha na variável. Depois de usar cat on stdin, o conteúdo completo (como mostrado por vim com: set list) foi
"^H$
^M^?INCORRECT^@"
O cifrão é uma nova linha.
Depois de algumas escavações, encontramos isso no código-fonte openssh
Que mostra a senha sendo substituída por
Que contém os caracteres que esperávamos. Os comentários explicam por que:
/*
* If the user logging in is invalid, or is root but is not permitted
* by PermitRootLogin, use an invalid password to prevent leaking
* information via timing (eg if the PAM config has a delay on fail).
*/
A lógica de validação usada para marcar o authctxt- > válido como falso está aqui link
Que define todas as razões pelas quais o usuário / senha podem ser inválidos.
Editar: atualizei os links para bloquear um commit específico para que eles permaneçam corretos. Embora o código tenha mudado, o comportamento não mudou.