Há alguns posts semelhantes sugerindo que isso pode ser um problema com a geração de um shell devido a configurações incorretas para o caminho do shell em /etc/passwd
Para verificar isso, determine se o caminho do shell do usuário existe e é executável;
# cat /etc/passwd | grep tomh
tomh:x:1000:1000:Tom H:/home/tomh:/bin/bash <-- check this exists
Verifique se o shell existe:
# file /bin/bash
/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
também, verifique se o shell não está definido como /sbin/nologin ou /bin/false , o que também bloqueia o login, mesmo com uma autenticação bem-sucedida.