Existem três etapas gerais em um login SSH:
- O SSH autentica o usuário (verificando se o solicitado possui uma senha ou chave privada ou algum outro método).
- O SSH inicia uma sessão, que pode passar pelo PAM (e, portanto, pode falhar dependendo da configuração do PAM).
- O SSH inicia um shell.
Desta parte do ssh -v trace:
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending command: /bin/bash
vemos que a autenticação foi bem-sucedida no nível do SSH, e o daemon ssh iniciou um shell ( /bin/bash ). Então é algo em /bin/bash ou sua configuração que impede o login. Verifique os arquivos de inicialização bash: ~root/.bash_login , ~root/.bash_profile , /etc/profile e outros arquivos que eles possam incluir. Tente um login não interativo: ssh root@localhost ls ; isso ainda vai passar pelo bash mas não pelos mesmos arquivos de inicialização (o bash é estranho, ele lê ~/.bashrc para um login não interativo quando seu pai é rshd ou sshd ).
Se houver algo quebrado em um arquivo de inicialização, você pode quebrar pressionando Ctrl + C no momento exato (após a sessão SSH ser estabelecida, para que O SSH enviará o Ctrl + C para o host remoto e não fechará a conexão, mas antes que a instrução problemática no arquivo de inicialização seja executada). Na prática, o momento certo pode ser alcançado manualmente com algumas tentativas; isso pode ajudar a carregar a máquina. Se você não conseguir fazer isso manualmente, um pequeno programa expect deve levá-lo até lá.