La connexion à l'un de mes serveurs à l'aide de ssh prend plus de 20 secondes à démarrer.
Ceci n'est pas lié aux conditions LAN ou WAN, car la connexion à elle-même prend la même chose (ssh localhost). Une fois la connexion établie, il est très rapide d'interagir avec le serveur.
L'utilisation de -vvv montre que la connexion est bloquée après avoir dit "pledge: network". À ce stade, l'authentification (ici à l'aide de la clé) est déjà effectuée, comme visible ici:
...
debug1: Authentication succeeded (publickey).
Authenticated to myserver.mydomain.com ([xx.xx.xx.xx]:22).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
(... coincé ici pendant 15 à 25 secondes ...)
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug2: client_session2_setup: id 0
...
Le serveur est Ubuntu 16.04. Cela m'est déjà arrivé dans le passé avec un autre serveur (était Ubuntu 12.04), nerver a trouvé la solution et le problème a disparu au bout d'un moment ...
sshd_config est celui par défaut fourni par Ubuntu.
Jusqu'à présent, j'ai essayé:
Il s'agit probablement d'un problème avec D-Bus
et systemd
. Si le service dbus
est redémarré pour une raison quelconque, vous devrez également redémarrer systemd-logind
.
Vous pouvez vérifier si c'est le problème en ouvrant le journal du démon ssh (sur Ubuntu, il devrait être /var/log/auth.log
) et vérifiez s'il a ces lignes:
sshd[2721]: pam_systemd(sshd:session): Failed to create session: Connection timed out
Si oui, redémarrez simplement systemd-logind
un service:
systemctl restart systemd-logind
J'ai eu ce même problème sur CentOS 7, car le messagebus
a été redémarré (c'est ainsi que le D-Bus
le service est appelé sur CentOS).
trouvé la réponse:
changé UsePAM de oui à non dans le fichier sshd_config
Après avoir redémarré le service ssh, la connexion est maintenant immédiate avec le serveur. Sur ce serveur, PAM est lié à LDAP, c'est donc probablement la raison, même si ici je me connecte avec un utilisateur déclaré sur le serveur lui-même, pas LDAP.
Eh bien, c'est plus un moyen de contourner le problème, pas vraiment une solution ... J'ai d'autres serveurs configurés de la même manière qui n'ont pas ce problème.
J'espère que cela peut aider quelqu'un ...
Cela s'est produit sur deux de mes serveurs Fedora 25 et était dû à de nombreuses tentatives de connexion SSH ayant échoué.
(Les suggestions courantes d'utilisation de GSSAPIAuthentication=no
et UseDNS=no
, ou redémarrage systemd-logind
, n'a fait aucune différence.)
Sur ces serveurs, /etc/pam.d/postlogin
contient:
session optional pam_lastlog.so silent noupdate showfailed
La page de manuel de pam_lastlog
explique que l'option showfailed
:
Affiche le nombre de tentatives de connexion échouées et la date de la dernière tentative échouée de btmp.
Sur ces serveurs, le /var/log/btmp
les fichiers étaient énormes en raison de nombreuses tentatives de connexion infructueuses. Les fichiers journaux btmp
n'étaient pas non plus tournés.
J'ai installé le package logrotate
pour m'assurer que les fichiers journaux seront tournés à l'avenir. (Sur Fedora, la configuration fournie avec logrotate
gère la rotation de /var/log/btmp
.)
J'ai également supprimé les énormes fichiers journaux btmp
; dès que je l'ai fait, la connexion aux serveurs était à nouveau instantanée.
Pour moi, ce problème est dû à un gros fichier (des centaines de Mo) btmp
. Ce fichier enregistre les tentatives de connexion. Lorsque des personnes essaient de forcer votre mot de passe par force brute, ce fichier peut être volumineux et entraîner des retards dans le "pledge: network"
phase.
Essayez d'effacer le fichier journal
echo "" > /var/log/btmp
et voyez si cela aide.
Dans mon cas, la raison en était un rsyslogd écrasé. J'ai découvert cela parce qu'il n'y avait plus de messages de journal, par ex./var/log/syslog ou /var/log/mail.log
Donc service rsyslog restart
a résolu le problème pour nous.
Pour moi, la solution ajoutait
UseDNS no
à la /etc/ssh/sshd_config
puis bien sûr service ssh restart
(sur notre serveur Debian/Jessie). Rien d'autre...
avant:
ssh git@git.*****.de true 0.03s user 0.01s system 0% cpu 13.440 total
ssh git@git.*****.de true 0.03s user 0.01s system 0% cpu 20.990 total
ssh git@git.*****.de true 0.03s user 0.02s system 0% cpu 31.114 total
ssh git@git.*****.de true 0.03s user 0.01s system 0% cpu 25.898 total
après:
ssh git@git.*****.de true 0.03s user 0.02s system 5% cpu 0.832 total
ssh git@git.*****.de true 0.03s user 0.01s system 7% cpu 0.523 total
ssh git@git.*****.de true 0.03s user 0.01s system 7% cpu 0.574 total
Sur Ubuntu 16+ à chaque fois que j'ai vu ssh -v XXX@YYY
décrochage à pledge: network
il peut être corrigé en suivant les instructions que j'ai trouvées ici n guide complet pour réparer les connexions SSH lentes . Plus précisément, un module PAM en option qui ne semble pas nécessaire est à l'origine du retard.
Dans /etc/pam.d/common-session
sur la machine pour laquelle vous voyez des connexions lentes (c'est-à-dire le serveur). Commentez la ligne session optional pam_systemd.so
. Cela devrait résoudre immédiatement le problème.
Cela évite d'avoir à arrêter complètement PAM, ce qui paralyse la connexion avec les mots de passe.
J'ai remarqué la ligne suivante dans mes commentaires de débogage:
Control socket connect(/var/lib/jenkins/.ssh/USER@Host:22): Permission denied
Qui était un fichier appartenant à root:root
pendant que je suis jenkins
. La suppression de ce fichier a résolu mes problèmes.
Le problème pour moi (Ubuntu 19.10) était que mon:
/etc/pam.d/sshd
# Print the message of the day upon successful login.
# This includes a dynamically generated part from /run/motd.dynamic
# and a static (admin-editable) part from /etc/motd.
session optional pam_motd.so motd=/run/motd.dynamic
session optional pam_motd.so noupdate
Commenter les paramètres de motd m'a fait entrer.