Inicio de sesión ssh lento: la activación de org.freedesktop.login1 ha excedido el tiempo de espera


39

En uno de mis servidores, he notado realmente un retraso en los inicios de sesión SSH.

Al conectarse utilizando las opciones ssh -vvv, el retraso se produce en debug1: Entering interactive session.

extracto de conexión:

debug1: Authentication succeeded (publickey).
Authenticated to IP_REDACTED ([IP_REDACTED]:22).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug3: packet_set_tos: set IP_TOS 0x10
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1

Utilizando el método descrito aquí , generé una salida de strace y noté la línea 14:09:53.676004 ppoll([{fd=5, events=POLLIN}], 1, {24, 999645000}, NULL, 8) = 1 ([{fd=5, revents=POLLIN}], left {0, 0}) <25.020764>que tarda 25 segundos.

extracto de salida de strace:

14:09:53.675567 clock_gettime(CLOCK_MONOTONIC, {4662549, 999741404}) = 0 <0.000024>
14:09:53.675651 recvmsg(5, {msg_name(0)=NULL, msg_iov(1)=[{"l\4\1\1\n\0\0\0\2\0\0\0\215\0\0\0\1\1o\0\25\0\0\0", 24}], msg_controll
en=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 24 <0.000024>
14:09:53.675744 recvmsg(5, {msg_name(0)=NULL, msg_iov(1)=[{"/org/freedesktop/DBus\0\0\0\2\1s\0\24\0\0\0"..., 146}], msg_controllen
=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 146 <0.000025>
14:09:53.675842 recvmsg(5, 0x7ffe0ff1dfa0, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailab
le) <0.000023>
14:09:53.675925 clock_gettime(CLOCK_MONOTONIC, {4662550, 96075}) = 0 <0.000024>
14:09:53.676004 ppoll([{fd=5, events=POLLIN}], 1, {24, 999645000}, NULL, 8) = 1 ([{fd=5, revents=POLLIN}], left {0, 0}) <25.020764>
14:10:18.696865 recvmsg(5, {msg_name(0)=NULL, msg_iov(1)=[{"l\3\1\0013\0\0\0\3\0\0\0m\0\0\0\6\1s\0\5\0\0\0", 24}], msg_controllen=0,     msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 24 <0.000017>
14:10:18.696944 recvmsg(5, {msg_name(0)=NULL, msg_iov(1)=[{":1.10\0\0\0\4\1s\0#\0\0\0org.freedesktop."..., 155}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 155 <0.000018>

He notado una entrada en los registros de autenticación en el momento relevante:

Jul 21 14:10:18 click sshd[8165]: pam_systemd(sshd:session): Failed to create session: Activation of org.freedesktop.login1 timed out

No sabiendo lo suficiente sobre esto, ¿por qué está tratando de sondear y por qué ahora tarda 25 segundos en este servidor en particular?

El journalctl -u systemd-logindcomando muestra

Jul 20 11:33:06 click systemd-logind[19415]: Failed to abandon session scope: Transport endpoint is not connected
Jul 21 05:04:54 myhost systemd[1]: Started Login Service.
Jul 21 12:15:30 myhost systemd[1]: Started Login Service.
Jul 21 12:17:04 myhost systemd[1]: Started Login Service.
Jul 21 12:49:55 myhost systemd[1]: Started Login Service.
Jul 21 13:57:05 myhost systemd[1]: Started Login Service.
Jul 21 13:58:49 myhost systemd[1]: Started Login Service.
Jul 21 14:01:55 myhost systemd[1]: Started Login Service.
Jul 21 14:08:32 myhost systemd[1]: Started Login Service.
Jul 21 14:09:53 myhost systemd[1]: Started Login Service.
Jul 21 14:19:08 myhost systemd[1]: Started Login Service.
Jul 21 14:21:26 myhost systemd[1]: Started Login Service.
Jul 21 14:22:37 myhost systemd[1]: Started Login Service.
Jul 21 14:25:20 myhost systemd[1]: Started Login Service.
Jul 21 14:30:27 myhost systemd[1]: Started Login Service.
Jul 21 15:02:56 myhost systemd[1]: Started Login Service.

La emisión del comando lo systemctl restart systemd-logind.servicecorrige (por ahora probablemente).

¿Qué es lo Activation of org.freedesktop.login1que menciona? ¿Hay alguna manera de evitar tener que reiniciar logind en el futuro? Espero que con el tiempo tenga este problema con el resto de los servidores que administro.

Acabo de notar que esto comienza a suceder en otro servidor.

$ sudo service systemd-logind status

● systemd-logind.service - Login Service
   Loaded: loaded (/lib/systemd/system/systemd-logind.service; static)
   Active: active (running) since Tue 2015-06-16 14:10:57 BST; 1 months 12 days ago
     Docs: man:systemd-logind.service(8)
           man:logind.conf(5)
           http://www.freedesktop.org/wiki/Software/systemd/logind
           http://www.freedesktop.org/wiki/Software/systemd/multiseat
 Main PID: 1701 (systemd-logind)
   Status: "Processing requests..."
   CGroup: /system.slice/systemd-logind.service
           └─1701 /lib/systemd/systemd-logind

Jul 28 13:16:21 myhost systemd[1]: Started Login Service.
Jul 28 13:16:47 myhost systemd[1]: Started Login Service.
Jul 28 16:09:23 myhost systemd[1]: Started Login Service.
Jul 28 16:09:49 myhost systemd[1]: Started Login Service.
Jul 28 16:10:15 myhost systemd[1]: Started Login Service.
Jul 28 16:10:41 myhost systemd[1]: Started Login Service.
Jul 28 22:50:19 myhost systemd[1]: Started Login Service.
Jul 29 05:00:15 myhost systemd[1]: Started Login Service.
Jul 29 11:00:20 myhost systemd[1]: Started Login Service.
Jul 29 11:09:56 myhost systemd[1]: Started Login Service.

EDITAR - journalctlsalida ampliada .

EDIT2: se agregó el estado systemd-logind como se sugiere en los comentarios cuando noté que esto comenzaba en otro servidor.

ACTUALIZACIÓN: esto está comenzando a sucederle al resto de mis servidores Jessie. ¿Soy el único que experimenta esto? Debe haber alguna solución además de reiniciar systemd-logind, ¿alguien tiene alguna idea?

Hay un informe de error de Debian en este 770135 .


Sería útil ver la salida de systemcts status systemd-logindantes de reiniciar para ver qué estaba mal (salido, fallado, lo que sea). ppolles solo un mediador que está esperando la respuesta de systemd para que no pueda culparlo.
Jakuje

no hay systemctscomando
Alasdair

lo siento. systemctlpor supuesto
Jakuje

Pensé que eso era lo que querías decir, pero quería estar seguro. ¿No es la misma salida que está disponible desde el comandojournalctl -u systemd-logind
Alasdair

debería mostrar el registro, pero también el estado del servicio en sí.
Jakuje

Respuestas:


48

Esto sucede cuando se reinicia dbus, pero systemd-logind no se reinicia. Solo haz lo siguiente:

systemctl restart systemd-logind

La solución es desde aquí: https://major.io/2015/07/27/very-slow-ssh-logins-on-fedora-22/


1
Ya indicado en la pregunta, el informe de error aún no se ha resuelto, pero gracias por restablecerlo.
Alasdair

Nota: esto también puede dar un "ciclo de inicio de sesión" en el lightdm greeter normal; Se aplica la misma solución.
Martillo

1

Utilizando:

systemctl restart systemd-logind

resuelve el problema solo temporalmente.

Una solución alternativa es eliminar todos los .scopearchivos de un trabajo cron, como se indica aquí .

* 2,14 * * * root /bin/rm -f /run/systemd/system/*.scope

El informe de error de systemd relacionado está aquí: fuga de unidades de alcance que ralentiza "systemctl list-unit-files" y retrasa los inicios de sesión .

Parece que, de hecho, es un error de dbus: unix fd cuenta en vuelo roto que se resuelve en dbus versión 1.11.10

Para una solución permanente de este error, solo tiene que esperar que esta versión de dbus aparezca en su distribución. Por ahora, Debian Stretch está en dbus 1.10.18, Ubuntu 17.04 (Zesty) está en 1.10.10, CentOS 7 está en dbus 1.6.12.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.