Risposte:
Ci sono diverse cose che possono andare storte. Aggiungi -vvv
per rendere ssh print una traccia dettagliata di ciò che sta facendo e vedi dove è in pausa.
Il problema potrebbe essere sul client o sul server.
Un problema comune sul server è se ci si connette da un client per il quale si verifica il timeout delle ricerche DNS inverse. (Una "ricerca DNS inversa" significa tornare dall'indirizzo IP della macchina client a un nome host. Non è davvero utile per la sicurezza, solo leggermente utile per diagnosticare i tentativi di interruzione dalle voci di registro, ma la configurazione predefinita lo fa comunque.) Per disattivare le ricerche DNS inverse, aggiungi UseDNS no
a /etc/ssh/sshd_config
(devi essere root sul server; ricorda di riavviare il servizio SSH in seguito).
Un'altra cosa che può andare storta è il timeout dell'autenticazione GSSAPI . Se non sai di cosa si tratta, probabilmente non ti stai affidando; puoi disattivarlo aggiungendo la linea GSSAPIAuthentication no
a /etc/ssh/ssh_config
o ~/.ssh/config
(che si trova sul lato client).
UseDNS no
riparato come un fascino. Sono su una rete interna senza server DNS per gestire ricerche inverse per IP interni.
GSSAPIAuthentication
? (googling per 15 minuti non ha fatto luce su questo)
Attendi il processo di accesso e vedi quanto tempo impiegherà:
[root@gislab00207 ~]# time ssh root@ISSLABNTL01
root@isslabntl01's password:
Last login: Fri Oct 4 07:55:03 2013 from 3.60.40.232
[root@ISSLABNTL01 ~]# exit
logout
Connection to ISSLABNTL01 closed.
real 0m45.192s
user 0m0.003s
sys 0m0.005s
You have new mail in /var/spool/mail/root
[root@gislab00207 ~]#
Vedi sopra ci sono voluti circa 45 secondi per accedere -------- MOLTO LENTO
Una volta effettuato l'accesso come root, modifica il file sshd_config e modifica la voce UseDNS come di seguito. Qui sto usando sed invece di modificare il file.
[root@ISSLABNTL01 ~]# grep -i dns /etc/ssh/sshd_config
#UseDNS yes
[root@ISSLABNTL01 ~]# sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config
[root@ISSLABNTL01 ~]# grep -i dns /etc/ssh/sshd_config
UseDNS no
[root@ISSLABNTL01 ~]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@ISSLABNTL01 ~]# exit
Cerchiamo il tempo per il processo di accesso e vediamo ora quanto tempo ci vorrà.
[root@gislab00207 ~]# time ssh root@ISSLABNTL01
root@isslabntl01's password:
Last login: Fri Oct 4 07:55:03 2013 from 3.60.40.232
[root@ISSLABNTL01 ~]# exit
logout
Connection to ISSLABNTL01 closed.
real 0m6.192s
user 0m0.003s
sys 0m0.005s
You have new mail in /var/spool/mail/root
[root@gislab00207 ~]#
Vedi ora ci sono voluti 6 secondi, il tempo per me di digitare la password.
UseDNS no
Risolto
È qualcosa che non va dall'installazione di Ubuntu.
Per risolverlo devi cambiare questa riga in /etc/nsswitch.conf :
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
E cambiarlo per questo:
hosts: files dns
nsswitch.conf
questo modo è chiedere problemi e non fornire una soluzione generale per rallentare SSH.
Nel mio caso, il problema può essere risolto riavviando systemd-logind
:
systemctl restart systemd-logind
Questo è menzionato su Serverfault .
Devo farlo regolarmente però, e non so quale sia la causa principale del problema.
L'output di debug per ssh nel mio caso si è fermato per 30 secondi mentre si stava "connettendo". La soluzione si è rivelata correlata alle impostazioni DNS sul mio sistema locale. Una precedente configurazione di rete aveva lasciato dietro di sé un server DNS falso nel /etc/resolv.conf
file. La sostituzione con un server DNS corrente ha risolto il problema.
Per me stava cambiando il DNS di sistema in 127.0.0.1, prima di questo c'era un host inesistente.
nano /etc/resolv.conf
E scrivi quanto segue
domain localdomain
search localdomain
(Removed this line) ===> nameserver 10.0.0.1
(Added this line) ===> nameserver 127.0.0.1
Non so tanto sull'ambiente del poster quanto vorrei, ma per gli altri con un problema simile, potrebbe essere un problema con sssd
cui usiamo per legare ldap mojo.
Questo mi succede:
$ time ssh server.example.com
real 2m0.018s
user 0m0.006s
sys 0m0.004s
Devo accedere al server (nel mio caso tramite la console) quindi eseguire una:
service restart sssd
Dopo ciò, le cose funzionano e basta. Non ho avuto il tempo di eseguire il debug della causa principale, ma questo cerotto funziona per me.
Potrei risolvere la richiesta di password lenta tramite ssh - problema selezionando Abilita inoltro DNS nelle impostazioni DHCP sul mio router dlink. Successivamente le connessioni con SSH hanno funzionato in un secondo.
Network Settings -> Router Settings -> Enable DNS Relay [x]
La configurazione predefinita inoltra ogni richiesta DNS al provider. Era lento anche se mi stavo connettendo con ssh pi@10.0.0.103. Un suggerimento per la soluzione era una voce in /etc/resolv.conf "search upc.at" che viene fornita tramite dhcp.
Il manuale di dlink afferma:
When DNS Relay is enabled, DHCP clients of the router will be assigned
the router's LAN IP address as their DNS server. All DNS requests that
the router receives will be forwarded to your ISPs DNS servers.
When DNS relay is disabled, all DHCP clients of the router will
be assigned the ISP's DNS server.
Dopo un rilascio di dhcp su client e server, la connessione tramite SSH è stata nuovamente veloce. HTH.