Estou trabalhando com um cluster de 20 hosts, todos executando o CentOS 7.3.
Estou tentando criar um teste automatizado para verificar isso:
- Nossa conectividade de rede esperada está em vigor
- Nossa solução SSH Single Sign On (SSO) está funcionando
A conectividade de rede esperada é muito simples: é uma sub-rede simples e plana. Cada host deve ser capaz de alcançar todos os outros hosts.
Nossa solução de SSO SSO (FreeIPA) usa o Kerberos para autenticar usuários e usa chaves públicas SSH para autenticar hosts. O Ticket de Concessão de Bilhete Kerberos (TGT) de um usuário é definido para encaminhar para qualquer host ao qual o usuário se conecta usando SSH.
O teste é muito simples:
Faça com que cada host tente usar o SSH para executar hostname como um comando remoto em todos os outros hosts.
Para fazer isso, eu uso um utilitário chamado pdsh .
Em suma, este utilitário usa SSH para executar um comando remoto em um conjunto de hosts. Ele faz isso em paralelo, gerando um thread para cada host e em cada um desses threads, executando o comando ssh .
Meu uso deste comando é o seguinte. Em uma máquina que não é um dos 20 hosts de cluster, eu executo este comando:
pdsh -g all 'pdsh -g all "hostname"'
-g all especifica que o comando remoto deve ser executado em todos os hosts do cluster. Como afirmado, tenho 20 hosts de cluster.
O comando a ser executado em cada host remoto é:
pdsh -g all "hostname"
Assim, como dito acima, todo host tenta executar o comando "hostname" em todos os outros hosts como um comando remoto via SSH.
Portanto, isso resulta em 20 invocações (uma por host de cluster) de:
ssh 'pdsh -g all "hostname"'
Por sua vez, isso resulta em 20 * 20 = 400 invocações de:
ssh <hostname> hostname
Então, eu tenho um total de 20 + 400 = 420 autenticações SSH ocorrendo dentro de um período muito curto de tempo.
O problema que estou vendo é um pequeno punhado de falhas de autenticação. Os hosts nos quais a falha ocorre são arbitrários. Não há rima ou razão. Uma falha é assim:
host-5: host-3: Permission denied, please try again.
host-5: host-3: Permission denied, please try again.
host-5: host-3: Received disconnect from UNKNOWN: 2: Too many authentication failures for myuser
host-5: pdsh@host-5: host-3: ssh exited with exit code 255
Eu tenho o seguinte configurado em / etc / ssh / sshd_config para permitir que várias sessões autenticadas existam simultaneamente:
MaxStartups 500:30:600
Note que isso é muito exagerado - é responsável pelo número de autenticações que estão ocorrendo no cluster, mas na verdade só precisa levar em conta o número de autenticações que ocorrem em um determinado host. Então, acho que o problema está em outro lugar.
Assim, em resumo, tenho um grande número de autenticações de usuário SSH ocorrendo via Kerberos em um cluster de 20 hosts em um período muito curto de tempo. Falhas aleatórias de autenticação do usuário estão ocorrendo.
Por que essas falhas de autenticação do usuário podem ocorrer?