Preciso executar uma espécie de varredura em mais de 20 mil máquinas na rede (todas linux) e estou usando ssh para conectar-me a cada máquina, executar um pequeno comando nela e coletar a saída. Estou executando threads paralelos com cerca de 3k a 4k de máquinas em cada um.
O problema é que, para algumas máquinas, o login não está funcionando, o que no meu caso indica que a máquina não foi provisionada corretamente. O SSH leva cerca de um minuto para atingir o tempo limite, esse 1 minuto atrasa a varredura.
Existe alguma opção para reduzir o tempo limite que o ssh precisa esperar antes de encerrar a tentativa de conexão e exibir a mensagem:
ssh: connect to host xxxxx port 22: Connection timed out
e passar para a próxima máquina? Isso acelerará significativamente as varreduras em geral, não apenas quando estou fazendo uma varredura em muitas máquinas, mas até mesmo em um pequeno número de máquinas.
Use a opção ConnectTimeout . Você pode usá-lo via sinalizador -o. Leva o argumento em segundos. Por exemplo, para definir o período de tempo limite para 3 segundos, use o seguinte:
Nota: Se a máquina não estiver em sua rede local, ou houver uma alta latência em sua rede local, você deve manter o período de timeout em um valor mais alto, pois a latência pode afetar a conexão inicial.