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á.