Recentemente, houve relatos de problemas com o login de novos usuários registrados ao utilizar o SSH. O SysAdmin registra a Alice e depois faz com que a Alice tente fazer o login via SSH. A 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 raiz (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: Usuário inválido alice
+ a partir de 127.0.0.0.1
05:04:02 raiz (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: input_userauth_req
+uest: usuário inválido alice
05:04:02 raiz (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: Não falhou nenhum para dentro
+valido alice de usuário de 127.0.0.1 porta 54869 ssh2
05:04:06 raiz (sshd) : [AUTH] [ERR] sshd [PID=0x1111812D]: erro: Não foi possível ge
+t informações de sombra para NOUSER
05:04:06 raiz (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: Senha falhada para
+r usuário inválido alice de 127.0.0.1 porta 54869 ssh2
|
Mas se Alice usa um cliente Telnet ao invés de um cliente SSH, ela pode fazer o login sem problemas.
05:04:23 Processo 1111812E, PreLogin.System (pré-login), criado.
05:04:38 Processo 1111812E mudado para alice.CAC (login).
|
Além disso, se ao invés de tentar fazer o login imediatamente após ser registrada, Alice espera alguns minutos, ela pode fazer o login sem problemas.
05:12:51 Processo 11118130, root.root (sshd), criado.
05:12:55 raiz (sshd) : [AUTH] [INFO] sshd [PID=0x11118130]: Senha aceita
+ para alice a partir de 127.0.0.1 porta 54909 ssh2
05:12:55 Processo 11118131, root.root (sshd), criado.
05:12:55 Processo 11118131 mudado para alice.CAC (login).
|
O realmente frustrante é que às vezes o primeiro usuário recém-registado não tem problemas para se autenticar com o SSH, mas um segundo tem.
Então, o que está acontecendo?
Há certos problemas em ter programas POSIX como o SSH referenciando diretamente o banco de dados de registro. Ao invés 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 que ele referencia para determinar se um usuário é válido. Toda vez que o servidor posix_regdb_server procura um ID de usuário, ele compara a hora atual com a hora em que leu o banco de dados de registro pela última vez e, se essa hora for 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 o login usando SSH.
Para o cenário onde o primeiro usuário recém-registrado não tem problemas, mas o segundo faz o que acontece é que o SysAdmin registra Bob e faz com que Bob tente fazer o login. Como já se passaram mais de 5 minutos desde o último pedido de autenticação, o servidor posix_regdb_server atualiza sua cópia do banco de dados, vê Bob como um usuário válido e Bob pode fazer login. Agora o SysAdmin registra Alice e faz com que Alice tente fazer o login. No entanto, como já se passou apenas um ou dois minutos desde que Bob entrou no serviço posix_regdb_service não atualiza sua cópia do banco de dados e Alice não é encontrada, portanto, não é permitido o login.
Não há como mudar a janela de 5 minutos. Se você parar o processo posix_regdb_server, ele atualizará sua cópia do banco de dados de registro quando for reiniciado. Normalmente, ele será reiniciado automaticamente dentro de um minuto, mas pode levar até 2 minutos, portanto, enquanto você pode acelerar as coisas, você não pode acelerá-las em muito.
Uma estratégia melhor é registrar todos os novos usuários ao mesmo tempo, antes de tentar qualquer um deles. Também registrá-los em um momento em que ninguém está tentando fazer login via SSH, dessa forma, quando o primeiro novo usuário tentar fazer login, o servidor posix_regdb_server atualizará seu banco de dados e receberá todos os novos usuários ao mesmo tempo.
É claro que encontrar um momento em que ninguém esteja tentando fazer o login via SSH pode ser difícil, então a melhor estratégia é registrar todos os novos usuários ao mesmo tempo e depois ir tomar uma xícara de café antes de dizer-lhes que podem fazer o login.