Pourquoi l'invite de "mot de passe" de ssh met-elle si longtemps à apparaître?

94

Lorsque j'essaie ssh, l'invite du mot de passe prend trop de temps (presque deux minutes) pour apparaître.

Pourquoi cela arrive-t-il?

Neuquino
la source
1
La réponse de Gilles devrait être la réponse comme expliqué dans les commentaires, vraiment.
gertvdijk

Réponses:

143

Il y a plusieurs choses qui peuvent aller mal. Ajoutez -vvvà faire en sorte que ssh imprime une trace détaillée de ce qu'il fait et voit où il fait une pause.

Le problème peut être sur le client ou sur le serveur.

Un problème courant sur le serveur est que vous vous connectez à partir d'un client pour lequel les recherches DNS inversées expirent. (Une «recherche DNS inversée» signifie revenir de l'adresse IP de la machine cliente à un nom d'hôte. Ce n'est pas vraiment utile pour la sécurité, mais un peu utile pour diagnostiquer les tentatives d'intrusion dans les entrées du journal, mais la configuration par défaut le fait quand même.) Pour désactiver les recherches DNS inversées, ajoutez-le UseDNS noà /etc/ssh/sshd_config(vous devez être root sur le serveur; n'oubliez pas de redémarrer le service SSH par la suite).

Une autre chose qui peut mal se passer est le dépassement de délai d’authentification GSSAPI . Si vous ne savez pas ce que c'est, vous ne comptez probablement pas dessus; vous pouvez le désactiver en ajoutant la ligne GSSAPIAuthentication noà /etc/ssh/ssh_configou ~/.ssh/config(côté client).

Gilles
la source
8
Pour moi, c'était le problème d'authentification GSSAPIA. Je vous remercie.
RajaRaviVarma
14
La recherche inversée de DNS était mon problème
trinth
2
Le DNS inversé était aussi le coupable pour moi et l'a UseDNS noréglé comme un charme. Je suis sur un réseau interne sans serveur DNS pour gérer les recherches inversées d'IP internes.
Jordan Mack
1
Existe-t-il des implications en termes de sécurité pour la désactivation GSSAPIAuthentication? (googler pendant 15 minutes n'a pas fait la lumière à ce sujet)
Alexander Malakhov
3
@AlexanderMalakhov Si vous comptez sur cette information pour vous connecter, vous vous isolerez si vous le désactivez. Autre que ça, non. Et si vous utilisez GSSAPI, vous savez que vous auriez dû configurer un service basé sur GSSAPI sur votre réseau.
Gilles
13

Laisser le temps le processus de connexion et voir combien de temps cela prendra:

[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 ~]#

Voir ci-dessus cela a pris environ 45 secondes pour vous connecter -------- TRÈS LENT

Une fois connecté en tant que root, éditez le fichier sshd_config et modifiez l’entrée UseDNS comme ci-dessous. Ici, j'utilise sed au lieu de modifier le fichier.

[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

Laissez-nous chronométrer le processus de connexion et voyons maintenant combien de temps cela prendra.

[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 ~]#

Vous voyez, cela prend maintenant 6 secondes, le temps pour moi de taper le mot de passe.

Mamadou Lamine Diatta
la source
fantastique .. un point sur le temps .. le useDNS non fixé pour moi .. J'avais authentification par mot de passe et le délai était pour que ce mot de passe soit entré rapidement .. J'ai attendu que cela apparaisse, puis a fait ctrl-c pour que le 'temps 'ne m'a pas inclus entrer le mot de passe.
barlop
Je peux confirmer UseDNS nodans /etc/ssh/sshd_configcorrigé mon problème
UseDNS noRésolu
Pandurang Patil
@PandurangPatil Mauvaise option de configuration: usedns
Yusef Mohamadi
@zhilevan Vous devriez également mentionner pourquoi il s'agit d'une mauvaise configuration. Cela aidera à comprendre pourquoi c'est mauvais
Pandurang Patil
4

C'est quelque chose qui ne va pas de l'installation d'Ubuntu.

Pour résoudre ce problème, vous devez changer cette ligne dans /etc/nsswitch.conf :

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

Et changez-le pour celui-ci:

hosts:          files dns
Neuquino
la source
3
La configuration d'Ubuntu n'est pas fausse. Dans certains cas (réseaux domestiques sans serveurs DNS centraux), c'est la bonne chose à faire. Dans d'autres (réseaux où les demandes mDNS expirent), c'est mauvais.
Gilles
le [NOTFOUND = return] ne devrait pas être là.
Neuquino
4
@ Neuquino Il devrait être là. C'est là pour une raison que vous ne comprenez pas, apparemment. Jouer avec nsswitch.confce genre de problème, c'est poser des problèmes et ne pas fournir une solution générale pour ralentir la SSH.
gertvdijk
Cela me semble la seule solution qui fonctionne
linello
4

Dans mon cas, le problème peut être résolu en redémarrant systemd-logind:

systemctl restart systemd-logind

Ceci est mentionné sur Serverfault .

Je dois le faire régulièrement cependant et je ne sais pas quelle est la cause première du problème.

Candid Dauth
la source
1

La sortie de débogage pour SSH dans mon cas vient de s’arrêter pendant 30 secondes alors qu’elle était en train de «se connecter». La solution s'est avérée liée aux paramètres DNS de mon système local. Une configuration réseau précédente avait laissé un serveur DNS factice dans le /etc/resolv.conffichier. Le remplacement par un serveur DNS actuel a résolu le problème.

Erik Weitenberg
la source
0

Pour moi, je changeais les DNS système en 127.0.0.1, auparavant, c'était un hôte non existant.

nano /etc/resolv.conf

Et écris ce qui suit

domain localdomain
search localdomain
(Removed this line) ===> nameserver 10.0.0.1
(Added this line) ===> nameserver 127.0.0.1
Alireza
la source
Pour moi, ce fichier semblait être /etc/resolv.conf (no e)
Shadow
0

Je ne connais pas autant l'environnement de l'affiche que je le souhaiterais, mais pour d'autres personnes ayant un problème similaire, il peut s'agir d'un problème sssd, que nous utilisons pour relier LDAP Mojo.

Cela m'arrive:

$ time ssh server.example.com

real  2m0.018s
user  0m0.006s
sys   0m0.004s

Je dois accéder au serveur (dans mon cas via la console) puis faire un:

service restart sssd

Après cela, les choses fonctionnent. Je n'ai pas eu le temps de déboguer la cause première, mais ce pansement fonctionne pour moi.

KurtB
la source
0

Je pourrais résoudre le problème de mot de passe lent via ssh - issue en cochant la case Activer le relais DNS dans les paramètres DHCP de mon routeur dlink. Ensuite, les connexions avec SSH ont fonctionné en une seconde.

Network Settings -> Router Settings -> Enable DNS Relay [x]

La configuration par défaut transfère chaque demande DNS au fournisseur. C'était lent même si je me connectais avec ssh [email protected]. Un indice pour la solution était une entrée dans /etc/resolv.conf "search upc.at" fournie via dhcp.

Le manuel de dlink indique:

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.

Après une version DHCP sur le client et le serveur, la connexion via SSH était à nouveau rapide. HTH.

domih
la source