C'est une sorte d'occurrence régulière qu'après la connexion SSH à un serveur (ou même l'ouverture d'un terminal sur mon Mac), la bannière de connexion s'imprime immédiatement, mais il faut environ 10 secondes à une minute pour que l'invite du shell apparaisse. Après cela, les performances sont bonnes et la latence du réseau n'est pas inhabituelle.
Cela ne semble pas être une tâche difficile sur le plan informatique, gourmande en mémoire ou gourmande en E / S. Que fait-il avec tous ces milliards de cycles CPU?
ssh
performance
shell
jacobbaer
la source
la source
ssh -v -v -v
etur_shell -x
pourrait être des étapes de débogage prudentes..bash_history
?Réponses:
Beaucoup de choses pourraient se produire ici. Vous pouvez trouver la plupart des réponses dans le manuel de votre shell, mais celles-ci sont généralement incroyablement longues et obliques, alors ...
Il y a de fortes chances que votre problème se résume à l'une des choses suivantes.
Si votre profil ou bashrc contient des éléments coûteux, envisagez de les recadrer.
Si votre profil ou bashrc utilise une recherche DNS inversée (pour définir l'invite ou quelque chose), corrigez DNS ou utilisez plutôt le nom d'hôte.
Les shells ouvrent beaucoup de fichiers, entre autres, lors de l'initialisation. Si la charge du système est élevée, elle apparaîtra souvent ici.
Si la bannière est une pré-authentification, il peut également s'agir d'une authentification (pam, LDAP, etc.) qui est lente.
Mais ce n'est peut-être rien de tout cela. Une quantité surprenante de choses se produit juste avant d'afficher l'invite!
la source
Il attend probablement le DNS ou essaie de s'authentifier via LDAP ou autre.
Essayez d'ajouter
UseDNS no
à / etc / ssh / sshd_configS'il le fait également lors des ouvertures de session locales, vérifiez si les serveurs LDAP ou DNS que vous avez configurés sont lents ou ne répondent pas.
la source
Une possibilité (couverte par d'autres réponses) est que le processus de configuration de la session SSH elle-même soit là où le temps est perdu.
Une autre alternative est que vos scripts de démarrage du shell exécutés sur la machine distante après l'établissement de la session SSH ont quelque chose qui prend beaucoup de temps (peut-être en essayant d'accéder à un montage réseau cassé). Vous pouvez déboguer cette deuxième possibilité comme suit:
Ajoutez temporairement les éléments suivants en haut de votre
~/.bash_profile
:Les
set -x
virages sur une mise au point pour chaque commande shell exécutée. LaPS4
variable contrôle la façon dont ce débogage est présenté - en particulier dans ce cas, nous utilisonsdate
pour ajouter des horodatages.Vous pouvez ensuite analyser les horodatages de la sortie de débogage pour voir quelles commandes de vos scripts de démarrage prennent trop de temps.
la source
S'il s'agit d'un serveur Ubuntu, la configuration de connexion par défaut vérifie si des packages peuvent être mis à jour à chaque exécution d'un shell de connexion. Si les listes de packages ne sont pas dans le cache disque, cela peut prendre une seconde ou deux même sur un bureau inactif rapide.
Pour générer ce message "redémarrage requis", il devait vérifier que le noyau en cours d'exécution n'est pas le noyau par défaut actuellement installé. (c'est-à-dire qu'il y avait un noyau et que je n'ai pas encore redémarré.) Il affichera également le nombre de mises à jour de sécurité disponibles, le cas échéant.
Je pense que c'est le ralentissement majeur de la connexion à Ubuntu qui a été introduit récemment.
Sinon, votre
~/.bash_profile
/~/.bashrc
pourrait être le problème.Avez-vous essayé de vous connecter au serveur depuis lui-même (
ssh localhost
)? Ou vous connecter immédiatement une deuxième fois? (Pour voir si c'est beaucoup plus rapide lorsque les choses sont mises en cache.)la source
Il s'agit dans la plupart des cas d' un délai d'expiration d'une demande DNS.
Cause: le serveur tente une recherche DNS inversée à l'aide de l'adresse IP du client et n'obtient pas de réponse. Si A se connecte à B, B essaie de convertir l'adresse IP de A en un nom.
Solution: entrez l'adresse IP et le nom du client dans le fichier d'hôtes du serveur.
Solution: faites connaître tous les hôtes au serveur DNS.
la source