Eu encontrei meu script antigo:
ssh -v -n \
-o Batchmode=yes \
-o StrictHostKeyChecking=no \
-o UserKnownHostsFile=/dev/null \
DOES_NOT_EXIST@localhost 2>&1 | grep password
-
A opção
-o Batchmode=yes
causa um modo não interativo em que um fallback para senha resulta em falha. -
O
-v
faz com que os métodos de autenticação sejam exibidos (entre outras coisas). -
O
-n
faz com que o ssh não abra um shell (normalmente usado com tunelamento), que nesse caso fará com que ele saia imediatamente (caso você esteja se conectando a um honeypot ou a um serviço como o serveo .net que permite clientes sem autenticação) -
-o StrictHostKeyChecking=no
e-o UserKnownHostsFile=/dev/null
aceitam automaticamente o host sem gravá-lo no arquivo de hosts conhecidos. -
2>&1
encaminha mensagens de depuração (stderr) para o sistema de registro (stdout) para quegrep
possa fazer sua mágica
Se a autenticação de senha estiver ativada para alguns usuários, ela será mostrada como ativada para todos os usuários (mas falhará após o prompt), até onde eu saiba. Eu suspeito que isso é assim que você não pode identificar positivamente que existe um usuário no sistema.
E para que eu não perca de novo: link