Recentemente, surgiram relatos de problemas para que usuários recém-registrados consigam fazer login ao usar o SSH. O administrador de sistemas registra a Alice e, em seguida, pede que ela tente fazer login via SSH. Alice relata um erro de autenticação.
As mensagens do syserr_log parecem indicar que a Alice não está registrada.
05:04:02 Processo 1111812D, root.root (sshd), criado.
05:04:02 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: Usuário inválido alice
+ de 127.0.0.1
05:04:02 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: input_userauth_req
+usuário: usuário inválido alice
05:04:02 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: Falha ao autenticar o usuário
+válido alice de 127.0.0.1 porta 54869 ssh2
05:04:06 root (sshd) : [AUTH] [ERR] sshd [PID=0x1111812D]: erro: Não foi possível obter
+informações shadow para NOUSER
05:04:06 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: Falha na senha para
+ o usuário inválido alice de 127.0.0.1 porta 54869 ssh2
|
Mas se a Alice usar um cliente Telnet em vez de um cliente SSH, ela poderá fazer login sem problemas.
05:04:23 Processo 1111812E, PreLogin.System (pré-login), criado.
05:04:38 Processo 1111812E mudou para alice.CAC (login).
|
Além disso, se, em vez de tentar fazer login imediatamente após se registrar, Alice esperar alguns minutos, ela poderá fazer login sem problemas.
05:12:51 Processo 11118130, root.root (sshd), criado.
05:12:55 root (sshd) : [AUTH] [INFO] sshd [PID=0x11118130]: Senha aceita
+para alice de 127.0.0.1 porta 54909 ssh2
05:12:55 Processo 11118131, root.root (sshd), criado.
05:12:55 Processo 11118131 mudou para alice.CAC (login).
|
O mais frustrante é que, às vezes, o primeiro usuário recém-registrado não tem dificuldade para se autenticar via SSH, mas o segundo tem.
Então, o que está acontecendo?
Existem certos problemas em permitir que programas POSIX, como o SSH, acessem diretamente o banco de dados de registro. Em vez disso, suas chamadas de autenticação são atendidas pelo processo posix_regdb_server. O processo posix_regdb_server mantém uma cópia do banco de dados de registro, à qual recorre para determinar se um usuário é válido. Sempre que o posix_regdb_server consulta um ID de usuário, ele compara a hora atual com a hora da última leitura do banco de dados de registro e, se essa hora estiver a mais de 5 minutos no passado, ele relê o banco de dados. Portanto, é possível que um usuário recém-registrado tenha que esperar até 5 minutos antes de poder fazer login usando o SSH.
No cenário em que o primeiro usuário recém-registrado não apresenta problemas, mas o segundo sim, o que acontece é que o administrador do sistema registra Bob e faz com que ele tente fazer login. Como já se passaram mais de 5 minutos desde a última solicitação de autenticação, o posix_regdb_server atualiza sua cópia do banco de dados, reconhece Bob como um usuário válido e ele consegue fazer login. Agora, o administrador do sistema registra Alice e pede que ela tente fazer login. No entanto, como se passaram apenas um ou dois minutos desde que Bob fez login, o posix_regdb_service não atualiza sua cópia do banco de dados e Alice não é encontrada, portanto não tem permissão para fazer login.
Não há como alterar o intervalo de 5 minutos. Se você interromper o processo posix_regdb_server, ele atualizará sua cópia do banco de dados de registro quando for reiniciado. Normalmente, ele é reiniciado automaticamente em menos de um minuto, mas isso pode levar até 2 minutos; portanto, embora seja possível acelerar o processo, a diferença não será significativa.
Uma estratégia melhor é registrar todos os novos usuários de uma só vez, antes de qualquer um deles tentar fazer login. Além disso, é recomendável registrá-los em um momento em que ninguém esteja tentando fazer login via SSH; assim, quando o primeiro novo usuário tentar fazer login, o posix_regdb_server atualizará seu banco de dados e importará todos os novos usuários de uma só vez.
É claro que pode ser difícil encontrar um momento em que ninguém esteja tentando fazer login via SSH; portanto, a melhor estratégia é cadastrar todos os novos usuários ao mesmo tempo e, em seguida, ir tomar um café antes de avisá-los de que podem fazer login.
