Comment accélérer mon login ssh trop lent?


42

Courir ssh user@hostnameprend environ 30 ans. Voici le scénario:

  • c'est une machine virtuelle sur le réseau local
  • Les machines Windows et Mac se connectent instantanément
  • J'utilise Debian et je pourrais reproduire avec une machine Ubuntu
  • une personne utilisant Ubuntu dit que la connexion à ma machine (réseau local) est également instantanée
  • Utiliser l'adresse IP du nom d'hôte prend environ la moitié moins de temps (~ 15s)

[ mise à jour ]

En utilisant ssh -vvv user@hostname, voici où il attend le plus:

debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic

Et puis ça attend un peu ici:

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found

1
utilisez-vous un mot de passe ou une authentification pubkey? et si mot de passe, le fichier id_dsaou est-il id_rsadans votre ~/.ssh? peut-être que votre installation ssh essaie d'abord la mauvaise authentification et que votre serveur ne refuse pas, mais ignore simplement cette requête, ce qui entraîne l'expiration du délai d'attente de 30 secondes
Tobias Kienzler

@tobias J'utilise un mot de passe et je n'ai pas de "~/.ssh"fichier. C'est un répertoire, et il ne contient qu'un "known_hosts"fichier.
Tshepang

5
Il semble que vous ayez un délai d'attente DNS de 15 secondes. Peut-être que le serveur effectue une recherche DNS; si vous pouvez, assurez - vous que vous avez UseDNS nodans sshd_configsur le serveur. Dans tous les cas, lancez ssh -vvv user@hostnamepour voir où la connexion est suspendue.
Gilles 'SO- arrête d'être méchant'

@gil Merci. J'ai mis à jour la question. Je demanderai à l'administrateur de vérifier ce paramètre UseDNS .
Tshepang

3
@Tshepang: Oh, vous utilisez l'authentification Kerberos (GSSAPI). Je ne suis pas au courant. Si elle est mal configurée, peut-être que cela cause le retard. C'est quelque chose que vous pouvez demander à votre administrateur. Le DNS pourrait être un fouillis rouge; c'est la cause la plus commune dans la nature, mais peut-être que votre problème est différent.
Gilles 'SO- arrête d'être méchant'

Réponses:


32

Editez votre " / etc / ssh / ssh_config " et commentez ces lignes:

GSSAPIAuthentication yes
GSSAPIDelegateCredentials no

3
+1 belle réponse! (1) Est-ce une vitesse normale pour la connexion par connexion SSH de prendre le temps du curseur clignotant 7 fois? (2) Pourquoi ça marche en commentant GSSAPIAuthentication yeset GSSAPIDelegateCredentials no? @Tshepang
Tim

@ Tim (1) c'est beaucoup trop long ... en fonction de la connexion, je ne m'attends pas à ce que cela prenne plus de 2 secondes; (2) Je n'ai aucune idée, juste que cela fonctionne
tshepang le

1
La valeur par défaut pour GSSAPIAuthentication dans la plupart des versions d'OpenSSH est "non", mais certaines distributions l'ont définie sur "oui" dans les fichiers sshd_config et ssh_config. Si vous n'en avez pas besoin / utilisez-le, cela ralentit l'établissement de la connexion / authentification.
tgharold

Si l'authentification LDAP / AD est en cours d'utilisation, la désactivation de GSSAPI ne provoquera-t-elle pas l'utilisation d'une liaison simple, susceptible d'envoyer des mots de passe en clair sur le réseau?
Shannon

Vérifiez que tous les serveurs de noms existent toujours dans /etc/resolv.conf. Si ce n'est pas le cas, sortez-les. Cela a résolu mon problème.
technocrate

30

J'ai eu ce problème et l'ai résolu en désactivant la résolution Reverse DNS dans SSH.

Donc, sshd_configsur le serveur, changez ceci:

 #UseDNS yes

pour ça:

UseDNS no

1
J'ai fait le changement (bien que je n'avais pas d' option UseDNS commentée ), réinitialisé mon serveur ssh et toujours le même problème.
Tshepang

2
@ She hmm, étrange. Les seuls problèmes de vitesse que j'ai jamais eu avec SSH étaient dus à cela.
Earlz

1
J'étais sceptique lorsque je me connectais à l'aide de l'adresse IP (réseau local), mais cette solution a résolu mon problème. Dans l’intérêt de Google, bien que cela se soit produit juste après, le retard n’a rien à voir avec le message "key: /home/mylogin/.ssh/id_ecdsa ((nil))" (lors de l’exécution ssh -vvv).
Skippy le Grand Gourou

7

Avez-vous vérifié votre configuration DNS?

Essayez la mise mdns offen /etc/host.conf.

Cela désactive la résolution mdns et m'a beaucoup aidé.

MODIFIER:

Il semble que gentoo gère cela un peu différemment. Pour désactiver les recherches DNS en multidiffusion, vous devez modifier le fichier /etc/nsswitch.conf.
Il devrait y avoir quelque chose comme:

hosts:          files mdns

Changez le en:

hosts:          files dns

+1 bonne idée. @Tshepang ssh se connecte-t-il plus rapidement lorsque vous utilisez directement l'adresse IP du nom d'hôte?
Tobias Kienzler

@tobias prend deux fois moins de temps
tshepang

Je suis en train de /etc/host.conf: line 2: bad command me retirer quand je cours ssh user@hostname.
Tshepang

Cela semble être un paramètre obsolète, car glibc 2.3.x (2006): forums.gentoo.org/viewtopic-t-476558-highlight-mdns.html . Que utilisez-vous (OS, version glic)?
Tshepang

1
Vous dites que cela prend seulement la moitié du temps lorsque vous utilisez l'adresse IP. Cela signifie que vous avez un problème avec la résolution de votre nom (IP => FQDN ou FQDN => IP). Commencez donc par examiner votre configuration DNS, puis essayez de déterminer si vous avez un problème avec ssh ou non.
Christian

3

L'ajout du nom d'hôte à /etc/hostspeut parfois résoudre ce problème.


Fonctionne pour un seul nom d’hôte, mais la solution de Earlz est plus générique (et corrige le même problème).
Skippy le Grand Gourou

1

Vérifiez également si nscdest installé et en cours d'exécution.

Ne pas avoir de cache DNS peut augmenter le temps nécessaire pour résoudre l'enregistrement PTR (en supposant que le client ssh effectue une recherche inversée DNS pour l'adresse IP du serveur)


0

J'ai le même problème dans l'environnement Windows 2008 R2, mais "useDNS no" ne fonctionne pas.

J'essaie d'ajouter au fichier hosts l'adresse IP et l'hôte du serveur qui se connecte, ce qui est plus rapide de 30 secondes. Ce qui me fait penser que la résolution pourrait être dans le DNS.

J'essaie d'ajouter des serveurs DNS mais cela ne le résout pas.

Mon serveur a deux suffixes DNS. 1 pour le domaine d'entreprise auquel appartient le serveur (domain.com) et l'autre pour son interface externe se connectant à un réseau privé (domain.net).

L'ordre de suffixe DNS est domain.net d'abord puis domain.com ensuite

Mes clients SFTP / SSH sont dans le domaine d'entreprise. À propos, les clients problématiques appartiennent au domaine de l'entreprise.

Ce qui fonctionne pour moi, c'est que je crée domain.com d'abord, puis domain.net ensuite.

Le délai de connexion de 2m30s auparavant était de 3-4s seulement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.