Respondendo a minha própria pergunta para apontar outro método que não requer nenhum software extra instalado: o módulo PAM pam_exec. Eu tenho a inspiração de aqui (pergunta semelhante, contexto diferente):
No meu caso, faz sentido colocar
auth optional pam_exec.so /path/to/command
no arquivo /etc/pam.d/ssh. Isso é executado somente quando o ssh / sftp faz autenticação de senha, não quando faz autenticação baseada em chave. O comando em / path / to / command pode então
- atribui o usuário a um grupo que só pode fazer autenticação baseada em chave (diretiva MatchGroup em sshd_config).
OR
- adicione o nome de usuário a um arquivo de texto simples. Se você colocar "auth required pam_listfile.so item = usuário sense = deny file = / caminho / para / texto / arquivo" em /etc/pam.d/ssh, o módulo pam_listfile terá o cuidado de rejeitar esse usuário na próxima vez.
Para excelentes tutoriais sobre o PAM, incluindo os dois módulos que menciono, consulte os links a seguir:
link
link