Lo primero decir que desconozco si esto sucede en versiones de kernel actuales. El problema lo he encontrado en un CentOS 6 con kernel 2.6.32-504.16.2.el6.x86_64.
Al hacer X11 forwarding contra este sistema, la variable $DISPLAY no quedaba establecida pese a tener todo bien configurado: xauth, sshd_config, etc. Buscando trazas en el debug de la conexión ssh (-vv) tampoco aparecía ningún error relevante. Finalmente, he encontrado un bug antiguo de debian que reproducía exactamente lo que me estaba pasando.
El problema, a grandes rasgos, tiene origen en tener ipv6 deshabilitado a nivel de sysctl y habilitado en el kernel. Esto provoca que openssh-server al hacer un getaddrinfo()
devuelva primero IPv6 en lugar de Ipv4, como el sistema no tiene ipv6 no termina de negociar bien la redirección X11.
La solución es sencilla, añadir la siguiente directiva (sólo utilizar IPv4) en el archivo de configuración del servidor openssh /etc/sshd/sshd_config
#AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: AddressFamily inet
AddressFamily: Specifies which address family should be used by sshd(8). Valid arguments are «any», «inet» (use IPv4 only), or «inet6» (use IPv6 only). The default is «any».
Y reiniciar ssh:
/etc/init.d/sshd restart
Buenas!
Precisamente yo ando desactivando IPv6 de la granja de servidores y hay que tener en cuenta:
– Postfix ( agregar inet_protocols = ipv4 a main.cf)
– Squid, http … Listen 0.0.0.0:puerto
Y para desactivar IPv6 en mi caso que trabajamos con rhel https://wiki.centos.org/FAQ/CentOS6#head-d47139912868bcb9d754441ecb6a8a10d41781df
Un saludo!!
Buena información Mike!
Un saludo.
Sabes si pasa cuando tienes IPv6 desactivado en la configuracion de red unicamente (/etc/sysconfig/network)?
Si solo lo desactivas de la configuración de red las aplicaciones intentarán levantar el módulo correspondiente (si es que no está activo) dandote una alerta de Selinux (de ahí establecer el Listen de apache con 0.0.0.0:* incluyendo los virtualhosts).