ssh -X no funciona en Yosemite

Ya no se puede usar X11 con ssh. Tener XQuartz2.7.7 instalado. Iniciar session con X11 a través de ssh da las advertencias

Advertencia: error en la configuration de reenvío de X11 que no es de confianza: datos de la key xauth no generados Advertencia: no hay datos xauth; utilizando datos de authentication falsos para el reenvío de X11.

En mi propio sistema, echo $DISPLAY da

/private/tmp/com.apple.launchd.GuewxwWwKS/org.macosforge.xquartz:03

Sin embargo, cuando bash xauth generate $DISPLAY . trusted xauth generate $DISPLAY . trusted , obtengo el error

xauth: (argv): 1: nombre de visualización incorrecto "/private/tmp/com.apple.launchd.GuewxwWwKS/org.macosforge.xquartz:0" en el command "agregar"

Alguna idea sobre como arreglar esto?

  • Crear una separación de línea para el buscador en el muelle? (osx 10.10)
  • OSX se cuelga y se reinicia varias horas después de ir a "dormir" (tapa cerrada)
  • Restablecer la contraseña de printing
  • Partición no removible después de intentar instalar ubuntu
  • ¿Cómo mantener una SSD en forma en Yosemite?
  • Aplique el Nombre del equipo y el nombre de host local con la Herramienta de image del sistema
  • ¿Por qué no puedo cambiar la plantilla normal de Microsoft Word 2016 para mac?
  • ScreenSharing como cliente / visor de VNC no funciona en Yosemite
  • One Solution collect form web for “ssh -X no funciona en Yosemite”

    Actualizar

    El desarrollador Jeremy Huddleston Sequoia anunció ayer que este problema se resuelve en XQuartz 2.7.8_beta2 :

    XQuartz 2.7.8_beta2 está disponible para download.

    Puede ver http://xquartz.macosforge.org/trac/wiki/X112.7.8 para get un set completo de cambios, pero los más notables son:

    1) xauth ahora analiza correctamente la ruta del socket $ DISPLAY de Yosemite launchd
    2) libGL se ha actualizado a Mesa 10.4.4
    3) Se corrigieron varios exploits en xorg-server, freetype y libpng
    4) Se ha corregido un error que impedía las actualizaciones automáticas en algunos casos

    El informe de error está cerrado y marcado como fijo:

    enter image description here

    Si no puede (o no quiere) instalar la versión beta, puede seguir usando la solución que explico a continuación.


    Análisis

    (desplácese hacia abajo para la sección de solución alternativa)

    Mi primer pensamiento fue: "la variable DISPLAY está mal".

    Pero no lo es. Resulta que, en OS X 10.10 Yosemite (y de return en 10.8 Mountain Lion ), la variable DISPLAY almacena una ruta de socket de launchd lugar del nombre de visualización familiar:

     hostname:displaynumber.screennumber 

    (Agregué información sobre el hostname:displaynumber.screennumber al final de esta respuesta).

    Esto requiere que xauth sepa cómo tratar con un valor de ruta de socket y, a partir de Mavericks, sí lo hizo. Desafortunadamente, el socket utilizado en Yosemite tiene una ruta diferente (más precisamente: /private/tmp/com.apple.launchd.XXXX lugar de /private/tmp/launch-XXXX ) y xauth breaks.

    Este error fue informado al equipo de XQuartz el 18 de noviembre de 2014 (hace 3 meses) ( http://xquartz.macosforge.org/trac/ticket/2068 ):

    El progtwig xauth tiene código en gethost.c y parsedpy.c para search nombres $ DISPLAY que comiencen con "/ tmp / launch", y para tratar eso como un socket local. Sin embargo, la location parece haber cambiado, $ DISPLAY ahora comienza con "/private/tmp/com.apple.launchd", por lo que el código que está buscando / tmp / launch no lo detecta. (…)

    De acuerdo con la descripción del error, se resolverá en XQuartz 2.7.8, que está retrasado 4 meses (consulte la página de la hoja de ruta del proyecto en http://xquartz.macosforge.org/trac/roadmap ).

    El parche que soluciona el problema se confirmó el 31 de diciembre de 2014 en el proyecto freedesktop.org ( http://cgit.freedesktop.org/xorg/app/xauth/commit/parsedpy.c?id=f990dd936b5fd1a40290bb88cde517a0ac38f823 ):

     diff --git a/parsedpy.cb/parsedpy.c index c591b77..7365224 100644 --- a/parsedpy.c +++ b/parsedpy.c @@ -42,6 +42,9 @@ in this Software without prior written authorization from The Open Group. #include <X11/Xauth.h> /* for FamilyLocal */ #include <X11/Xmu/SysUtil.h> +#include <sys/stat.h> +#include <sys/syslimits.h> + #if defined(UNIXCONN) || defined(LOCALCONN) #define UNIX_CONNECTION "unix" #define UNIX_CONNECTION_LENGTH 4 @@ -158,8 +161,32 @@ parse_displayname (const char *displayname, if (!host) return False; - if(strncmp (host, "/tmp/launch", 11) == 0) { - family = FamilyLocal; + { + /* + * If using launchd socket, remove the screen number from the end + * of $DISPLAY and check if it is a path to a socket. + */ + char path[PATH_MAX]; + struct stat sbuf; (...) 

    Por lo tanto, es solo cuestión de time que este parche llegue al siguiente lanzamiento de XQuartz.

    Solución

    (probado en OS X 10.10.2 Yosemite)

    Añadir:

     alias ssh="ln -fs $(echo $DISPLAY | sed 's:\(/private/tmp/com\.apple\.launchd\.[^/]*\)/.*:\1:') $(echo $DISPLAY | sed 's:/private/tmp/com\.apple\.launchd\.\([^/]*\)/.*:/private/tmp/launch-\1:'); ssh" 

    a ~/.bashrc y ya sea inicie una nueva window de Terminal o la fuente ( . ~/.bashrc ) en su session actual de la Terminal.

    Esta solución simboliza la ruta del socket a /tmp/launch-XXX (por ejemplo, ln -fs /private/tmp/com.apple.launchd.GuewxwWwKS /private/tmp/launch-GuewxwWwKS ) e inicia ssh :

    enter image description here


    De man X en Ubuntu: El nombre para mostrar del server X tiene esta forma:

     hostname:displaynumber.screennumber 

    dónde:

      hostname The hostname specifies the name of the machine to which the display is physically connected. If the hostname is not given, the most efficient way of communicating to a server on the same machine will be used. displaynumber The phrase "display" is usually used to refer to a collection of monitors that share a common set of input devices (keyboard, mouse, tablet, etc.). Most worksta‐ tions tend to only have one display. Larger, multi-user systems, however, fre‐ quently have several displays so that more than one person can be doing graphics work at once. To avoid confusion, each display on a machine is assigned a display number (beginning at 0) when the X server for that display is started. The display number must always be given in a display name. screennumber Some displays share their input devices among two or more monitors. These may be configunetworking as a single logical screen, which allows windows to move across screens, or as individual screens, each with their own set of windows. If configunetworking such that each monitor has its own set of windows, each screen is assigned a screen num‐ ber (beginning at 0) when the X server for that display is started. If the screen number is not given, screen 0 will be used. 
    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).