Estou trabalhando com um cluster de 20 hosts, todos executando o CentOS 7.3.
Estou tentando criar um teste automatizado para verificar se:
- 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 única e plana. Cada host deve ser capaz de alcançar todos os outros hosts.
Nossa solução SSH SSO (FreeIPA) usa Kerberos para autenticar usuários e chaves públicas SSH para autenticar hosts. O Kerberos Ticket Granting Ticket (TGT) de um usuário é configurado para encaminhar para qualquer host ao qual o usuário se conecte usando SSH.
O teste é muito simples:
Faça com que cada host tente usar SSH para executarnome de anfitriãocomo um comando remoto em todos os outros hosts.
Para fazer isso, eu uso um utilitário chamadopdsh.
Resumindo, este utilitário usa SSH para executar um comando remoto em um conjunto de hosts. Isso é feito em paralelo, gerando um thread para cada host e em cada um desses threads, executando o comandossh .
Meu uso deste comando é o seguinte. Em uma máquina que não é um dos 20 hosts do cluster, executo este comando:
pdsh -g all 'pdsh -g all "hostname"'
-g tudoespecifica que o comando remoto deve ser executado em todos os hosts do cluster. Conforme declarado, tenho 20 hosts de cluster.
O comando a ser executado em cada host remoto é:
pdsh -g all "hostname"
Portanto, como afirmado acima, cada 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 do cluster) de:
ssh 'pdsh -g all "hostname"'
Por sua vez, isso resulta em 20 * 20 = 400 invocações de:
ssh <hostname> hostname
Portanto, tenho um total de 20 + 400 = 420 autenticações SSH ocorrendo em um período muito curto de tempo.
O problema que estou vendo são algumas falhas de autenticação. Os hosts nos quais ocorre a falha são arbitrários. Não há rima ou razão. Uma falha se parece com isto:
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_configpara permitir que muitas sessões a serem autenticadas existam simultaneamente:
MaxStartups 500:30:600
Observe que isso é um exagero - ele leva em conta o número de autenticações acontecendo 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.
Então, em resumo, tenho um grande número de autenticações de usuários SSH ocorrendo via Kerberos em um cluster de 20 hosts em um período muito curto de tempo. Estão ocorrendo falhas aleatórias na autenticação do usuário.
Por que podem ocorrer tais falhas de autenticação do usuário?
Responder1
Se você reabrir sessões SSH para os mesmos hosts, recomendo usar conexões mestre de controle. Basicamente, uma sessão autenticada é mantida pelo cliente e pelo servidor, evitando a repetição da autenticação.
Veja também:ssh_config(5) --ControlMaster