87 votes

la connexion ssh met une éternité à s'initier, bloquée à "pledge : network" (gage : réseau)

La connexion à l'un de mes serveurs à l'aide de ssh prend plus de 20 secondes pour être initiée.

Ceci n'est pas lié aux conditions de LAN ou WAN, puisque la connexion à lui-même se fait de la même manière (ssh localhost). Une fois que la connexion est enfin établie, il est super rapide d'interagir avec le serveur.

L'utilisation de -vvv montre que la connexion est bloquée après avoir dit "pledge : network". A ce moment, l'authentification (ici en utilisant la clé) est déjà faite, 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 no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network

(...coincé ici pendant 15 à 25 secondes...)

debug1: client_input_global_request: rtype hostkeys-00@openssh.com 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 (Ubuntu 12.04), j'ai trouvé la solution et le problème a disparu après un certain temps...

sshd_config est celui fourni par défaut par Ubuntu.

Jusqu'à présent, j'ai essayé :

  • en utilisant -o GSSAPIAuthentication=no dans la commande ssh
  • utiliser un mot de passe au lieu d'une clé
  • utilisation de UsePrivilegeSeparation no au lieu de yes, dans sshd_config

1 votes

Pour moi, les connexions SSH lentes sont généralement dues à des problèmes de DNS, est-ce que cela pourrait être le cas ici ? Par exemple, le serveur peut être bloqué en essayant d'effectuer un reverse DNS pour l'IP du client et en attendant que cela se termine.

1 votes

En fait non : par défaut UseDNS n'est pas défini dans sshd_config et la page de manuel indique que cette option est "no" par défaut.

4 votes

Quelques recherches sur Google suggèrent que cela peut être causé par la mise à jour de systemd sans redémarrage. Et il y avait un Mise à jour de systemd pour xenial le 12 juillet . systemctl restart systemd-logind ne résout le problème que pendant une courte période pour moi.

63voto

multiholle Points 213

Il s'agit probablement d'un problème avec D-Bus y systemd . Si le dbus est redémarré pour une raison quelconque, vous devrez aussi redémarrer le service systemd-logind .

Vous pouvez vérifier si c'est le problème en ouvrant le journal du démon ssh (sur Ubuntu, ce devrait être /var/log/auth.log ) et vérifiez s'il comporte ces lignes :

sshd[2721]: pam_systemd(sshd:session): Failed to create session: Connection timed out

Si oui, il suffit de redémarrer systemd-logind 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 est appelé sur CentOS).

0 votes

J'ai essayé de redémarrer systemd-logind mais au bout d'un moment, le daemon PolicyKit s'est déconnecté du bus. Nous ne sommes plus un agent d'authentification enregistré. Le job pour systemd-logind.service a échoué car le délai d'attente a été dépassé. Voir "systemctl status systemd-logind.service" et "journalctl -xe" pour plus de détails.

0 votes

@KunRen vous devez probablement redémarrer l'application polkit service utilisant systemctl restart polkit .

0 votes

C'était cela, merci !

37voto

M-Jack Points 1296

A trouvé la réponse :

changement de UsePAM de yes à no 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, et non un utilisateur LDAP.

C'est plutôt une façon 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 pourra aider quelqu'un...

3 votes

Le fait de remplacer UsePAM par no a d'autres effets. Voir aussi cette discussion J'ai donc dû définir un mot de passe pour l'utilisateur, car j'ai obtenu des erreurs telles que User nagios not allowed because account is locked (l'utilisateur nagios n'est pas autorisé car le compte est verrouillé)

7 votes

Ce n'est vraiment pas une bonne idée.

2 votes

Pourquoi ? y a-t-il une alternative ?

23voto

Viacheslav Ivanov Points 631

Cela s'est produit sur deux de mes serveurs Fedora 25, et était dû à de nombreuses tentatives de connexion SSH ratées.

(Les suggestions communes d'utiliser GSSAPIAuthentication=no y UseDNS=no ou le 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 le showfailed l'option sera :

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 étaient énormes en raison de l'échec de nombreuses tentatives de connexion. Le site btmp les fichiers journaux n'ont pas été tournés non plus.

J'ai installé le logrotate pour s'assurer que les fichiers journaux seront tournés à l'avenir. (Sous Fedora, la configuration fournie avec le paquetage logrotate gère la rotation de /var/log/btmp .)

J'ai aussi supprimé l'énorme btmp Dès que j'ai fait cela, la connexion aux serveurs était à nouveau instantanée.

3 votes

Cela a résolu mon problème ! Je vous remercie. Belle prise. SSH prenait 5 à 10 secondes, et maintenant c'est moins qu'un clin d'œil. Il s'agit d'une VM que j'ai connectée à l'Internet public depuis des années. Ses règles de pare-feu pourraient probablement être légèrement améliorées, maintenant que j'y pense. Pour les autres, c'est tout ce que j'ai fait : sudo truncate -s 0 /var/log/btmp - Le mien avait une taille de 2,7 G.

1 votes

C'était le problème pour moi, merci @CarlBennett

2 votes

Cela m'a permis de résoudre le problème après une longue recherche frustrante. Je vous remercie !

19voto

Jonathan Gutow Points 221

Sur Ubuntu 16+, chaque fois que j'ai vu ssh -v XXX@YYY décrochage à pledge: network il peut être réparé en suivant les instructions que j'ai trouvées ici Un guide complet pour remédier à la lenteur des connexions SSH . Plus précisément, un module PAM optionnel qui ne semble pas être nécessaire est à l'origine du retard.

Sur /etc/pam.d/common-session sur la machine pour laquelle vous constatez un ralentissement des connexions (c'est-à-dire le serveur). Commentez la ligne session optional pam_systemd.so . Cela devrait immédiatement régler le problème.

Cela évite d'avoir à fermer complètement PAM qui paralyse la connexion avec les mots de passe.

1 votes

Cela fonctionne dans mon cas, et le lien est génial aussi. Merci beaucoup !

0 votes

Cela semble fonctionner sur un Raspberry mais j'aimerais savoir ce que cela fait réellement.

0 votes

Cela fonctionne ! Sur CentOS8, le fichier correspondant est /etc/pam.d/password-auth

7voto

Walter Points 243

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

En commentant les paramètres du motd, j'y suis entré directement.

1 votes

Merci, c'était mon problème. Le Raspberry Pi 2 n'est pas à l'abri d'une telle situation.

1 votes

Cela résout mes problèmes sur un Raspberry Pi, probablement causés par des vitesses microSD lentes.

0 votes

Cela a également corrigé le problème de lenteur de connexion pour le service SSHD fonctionnant dans le sous-système Ubuntu pour Windows 20.04.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X