ssh falla: imagen no encontrada [preauth]

4

Cuando intento SSH en mi computadora, ssh falla con este error:

Mothership:~ kuyan$ ssh kuyan@localhost
Connection closed by ::1

Esto también sucede cuando intento SSH para mi usuario desde otra computadora. Este mensaje aparece en la consola cuando intento conectarme:

12/12/12 3:44:30.468 PM sshd[2576]: fatal: ssh_sandbox_child: sandbox_init: dlopen(/usr/lib/libsandbox.1.dylib, 261): image not found [preauth]

Información relevante:

  • Estoy usando una versión de sshd diferente a la que proporciona OS X, instalada a través de brew install openssh , pero este error ocurre con ambas versiones.
  • /usr/lib/libsandbox.1.dylib existe:

    Mothership:~ kuyan$ ls /usr/lib/libsandbox*
    /usr/lib/libsandbox.1.dylib /usr/lib/libsandbox.dylib
    
  • Aquí está mi / etc / sshd_config . La línea relevante parece ser UsePrivilegeSeparation : cuando no se comenta y se establece en yes en lugar de sandbox , todo funciona A-OK.

  • Aunque no estoy usando MacPorts, el error que recibo es esencialmente el que aquí .
  • versión sshd: OpenSSH_6.1p1, OpenSSL 0.9.8r 8 Feb 2011
pregunta Natan 13.12.2012 - 02:40

2 respuestas

3

programas de debate:

2892/0xdc8e:  stat64("/usr/lib/libsandbox.1.dylib
sudo mkdir -p /var/empty/usr/lib
sudo cp /usr/lib/libsandbox.1.dylib /var/empty/usr/lib
", 0x7FFF500DA5F0, 0x7FFF500DB500) = -1 Err#2

que es ENOENT (no existe tal archivo o directorio) y la razón probablemente es que ya se produjo un chroot. Si eres tan tonto como para experimentar por

sshd[3256]: fatal: ssh_sandbox_child: sandbox_init: dlopen (/usr/lib/libsandbox.1.dylib, 261):
Library not loaded: /usr/lib/libsqlite3.dylib\n  Referenced from: /usr/lib/libsandbox.1.dylib\n  Reason: image not found [preauth]

Moverás el bloqueo a la siguiente shlib que no está en / var / empty /

sudo cp /usr/lib/libsqlite3.dylib /usr/lib/libMatch.1.dylib /var/empty/usr/lib/

Si persistes con esta locura

UsePrivilegeSeparation sandbox

sshd comenzará a funcionar de nuevo al menos para las claves SSH, las contraseñas aún no funcionan.

También puedes editar /usr/local/etc/sshd_config cambiando

UsePrivilegeSeparation yes

en

2892/0xdc8e:  stat64("/usr/lib/libsandbox.1.dylib
sudo mkdir -p /var/empty/usr/lib
sudo cp /usr/lib/libsandbox.1.dylib /var/empty/usr/lib
", 0x7FFF500DA5F0, 0x7FFF500DB500) = -1 Err#2

Pero fuera de los propósitos de depuración, no sugiero intentar nada de esto.

    
respondido por el user37169 16.03.2013 - 19:33
2

He solucionado este problema en sshd de MacPorts mediante la transferencia de un parche desde sshd de Apple (que se puede encontrar en enlace ). Apple movió la función que llama a sandbox_init(3) (que llama a dlopen(3) internamente) antes de la llamada a chroot(2) que haría fallar la carga de la biblioteca.

Los parches requeridos son

y openssh debe compilarse con -D__APPLE_SANDBOX_NAMED_EXTERNAL__ en los indicadores del preprocesador.

El hecho de no autenticarse con contraseñas se debe a que OS X no admite las funciones de biblioteca requeridas para hacerlo sin usar PAM. La configuración de UsePAM yes en su sshd_config debería funcionar (como debería aplicar enlace , que cambia el valor predeterminado para habilitar PAM).

    
respondido por el neverpanic 12.02.2014 - 02:49

Lea otras preguntas en las etiquetas