ssh non riesce: immagine non trovata [preauth]

4

Quando provo a SSH sul mio computer, ssh fallisce con questo errore:

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

Questo succede anche quando tento di SSH al mio utente da un altro computer. Questo messaggio appare in Console quando tento di connetterti:

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]

Informazioni pertinenti:

  • Sto usando una versione diversa di sshd che OS X fornisce, installata tramite brew install openssh - ma questo errore si verifica con entrambe le versioni.
  • /usr/lib/libsandbox.1.dylib esiste:

    Mothership:~ kuyan$ ls /usr/lib/libsandbox*
    /usr/lib/libsandbox.1.dylib /usr/lib/libsandbox.dylib
    
  • Ecco il mio / etc / sshd_config . La riga pertinente sembra essere UsePrivilegeSeparation : quando non commentata e impostata su yes anziché sandbox , tutto funziona come A-OK.

  • Anche se non sto usando MacPorts, l'errore che sto ottenendo è essenzialmente quello qui .
  • versione sshd: OpenSSH_6.1p1, OpenSSL 0.9.8r 8 Feb 2011
posta Natan 13.12.2012 - 02:40
fonte

2 risposte

3

mostra dtruss:

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

che è ENOENT (Nessun file o directory) e la ragione è probabilmente che il chroot è già successo. Se sei così sciocco da sperimentare con

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]

Sposterai il crash al successivo shlib non in / var / empty /

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

Se ti ostini con questa follia

UsePrivilegeSeparation sandbox

sshd riprenderà a funzionare almeno per le chiavi SSH, le password ancora non funzionano.

Puoi anche modificare /usr/local/etc/sshd_config cambiando

UsePrivilegeSeparation yes

in

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

Ma al di fuori degli scopi di debug non suggerisco di provare niente di tutto questo.

    
risposta data 16.03.2013 - 19:33
fonte
2

Ho risolto questo problema in sshd di MacPorts eseguendo il porting di una patch da sshd di Apple (che può essere trovata in link ). Apple ha spostato la funzione che chiama sandbox_init(3) (che chiama dlopen(3) internamente) prima della chiamata chroot(2) che renderebbe impossibile il caricamento della libreria.

Le patch richieste sono

e openssh deve essere creato con -D__APPLE_SANDBOX_NAMED_EXTERNAL__ nei flag del preprocessore.

L'impossibilità di autenticarsi con le password è perché OS X non supporta le funzioni della libreria richieste per farlo senza usare PAM. L'impostazione di UsePAM yes nella tua sshd_config dovrebbe funzionare (come dovrebbe applicare il link , che modifica l'impostazione predefinita per abilitare PAM).

    
risposta data 12.02.2014 - 02:49
fonte

Leggi altre domande sui tag