A primeira coisa que vejo é que você não adicionou especificamente um shell, você pode garantir que o shell do usuário esteja correto rodando como root:
chsh -s 'which bash' marco
A outra coisa a garantir é que o diretório pessoal foi criado pelo script useradd.
ls -al /home/marco/
Se não foi criado, você precisará criá-lo e alterar a propriedade para o usuário correto:
mkdir /home/marco
cp -a /etc/skel/.[a-z]* /home/marco
chown -R marco.marco /home/marco
Eu também me certificaria de que sua senha foi colocada corretamente em / etc / shadow, pois nunca confio na linha de comando:
passwd marco
E digite a senha para marco (BTW, é realmente uma péssima idéia colocar uma senha em qualquer lugar, mas em um campo de senha que não é mostrado. Os arquivos de histórico são extremamente fáceis de ler, assim como o serverfault :) marcos senha é tudo que estou dizendo)
Se você ainda não consegue logar, verifique / var / log / auth, / var / log / messages, / var / log / secure etc para entradas sshd, isso deve lhe dar uma boa idéia do que está falhando.