My guess is, that the problem are DNS requests timeouts. Try ... turning off the UseDNS option on the server you are connecting to.
O log do servidor praticamente confirmou isso (tão bem feito para postá-lo:).
debug3: Trying to reverse map address 10.0.2.2.
# ^^^ spends a lot of time after this line
Olhando para man sshd_config
:
UseDNS Specifies whether sshd(8) should look up the remote host name and check that the resolved host name for the remote IP address maps back to the very same IP address. The default is “yes”.
Observe que isso é praticamente sem sentido . A verificação não mata a conexão. Se não passar, registra apenas uma mensagem de toque de dedo:
Jul 9 05:43:00 brick sshd[18971]: Address 200.41.233.234 maps to host234.advance.com.ar, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
que serve apenas para gerar falsos positivos assustadores para usuários com ISPs incompetentes.
OK, então como isso pode causar um atraso?
Se o servidor DNS não responder imediatamente, o cliente tenderá a esperar & tente novamente. (No caso de um pacote DNS foi atrasado ou perdido devido ao congestionamento da rede). Se o servidor DNS não estiver respondendo, o cliente acabará desistindo. Por exemplo. dig
no meu sistema tenta novamente por 15 segundos. (Ele usa um código de biblioteca de DNS mais específico, mas o princípio é o mesmo).
$ time dig invalid @192.0.2.1
; <<>> DiG 9.9.4-P2-RedHat-9.9.4-12.P2.fc20 <<>> invalid @192.0.2.1
;; global options: +cmd
;; connection timed out; no servers could be reached
real 0m15.020s
user 0m0.010s
sys 0m0.011s
Portanto, o problema é que a pesquisa inversa não recebe uma resposta. Você pode executar a mesma pesquisa no servidor manualmente, e deverá ver o mesmo atraso que o ssh. getent hosts 10.0.2.2
.