Abilita SSH su un Mac in modalità utente singolo


10

Ho un iMac a cui posso accedere solo in modalità utente singolo, a causa di gravi danni all'hardware. Ho collegato ad esso un altro computer con un cavo Ethernet. Vorrei accedere in remoto a iMac tramite SSH. L'iMac esegue OS X 10.6.4.

Mi sono imbattuto in risposte simili ma quello che ho provato è sempre fallito.

Ho provato systemsetup -setremotelogin one restituisce il seguente messaggio di errore:

systemsetup[63:903] setInetDServiceEnabled failed for ssh because authorizationRef is NULL!

Mentre launchctl load -w /System/Library/LaunchDaemons/ssh.plistdà:

DNSServiceRegister("ssh"): -65563
DNSServiceRegister("sftp-ssh"): -65563
bind(): Can't assign requested address
launch_msg(): Socket is not connected
launchctl: CFURLWriteDataAndPropertiesToResource(/var/db/launchd.db/com.apple.launchd/overrides.plist) failed: -10

Cosa dovrei fare?


Can't assign requested addressmi sembra che non abbia alcun tipo di connessione di rete. Penso che in modalità utente singolo dovresti usare ifconfigo ifupattivare la rete.
Blacklight Shining

@BlacklightShining grazie! Ho poca esperienza con questi comandi, immagino che con un Mac sarebbe più appropriato usare networksetupo ipconfig, comunque. Hai un'idea di quali comandi dovrei dare per consentire a un altro computer di connettersi all'iMac tramite un singolo cavo Ethernet? Oppure, in alternativa, per connettere l'iMac a una rete Wi-Fi protetta con WPA2?
Ralphtor,

Non sono sicuro di me stesso. A man $program_nameproposito, puoi ottenere la pagina del manuale per quasi tutti i programmi . Dò un'occhiata e vedrò se riesco a trovare qualcosa da provare per te ...
Blacklight Shining

Risposte:


8

Sembra che tu abbia bisogno di caricare qualche altra lista:

launchctl load /System/Library/LaunchDaemons/com.apple.kextd.plist
launchctl load /System/Library/LaunchDaemons/com.apple.notifyd.plist
launchctl load /System/Library/LaunchDaemons/com.apple.configd.plist
launchctl load /System/Library/LaunchDaemon/com.apple.DirectoryServices.plist

Quindi fai quello che hai provato prima:

launchctl load -w /System/Library/LaunchDaemons/ssh.plist
systemsetup -setremotelogin on

Successivamente, penso che puoi semplicemente collegare il cavo Ethernet a entrambi i computer per creare una rete ad hoc. ifconfig en0 | grep inetsul computer di destinazione dovrebbe ottenere il suo indirizzo IP, e quindi è tutto pronto. :)


Grazie per il tuo consiglio, i primi comandi erano buoni. Purtroppo per l'ultimo comando del computer rispose con: DNSServiceRegister("ssh"): -65563, DNSServiceRegister("sftp-ssh"): -65563, con questi due messaggi ripetuto due volte. Quindi non riesco a connettermi con ssh. Ricordo vagamente di aver cambiato la porta per le connessioni SSH in arrivo, quindi è probabilmente colpa mia, ma apprezzerei qualsiasi aiuto
Ralphtor,

Devo chiarire: launchctl load -w /System/Library/LaunchDaemons/ssh.plistmi dà l'errore che ho citato nel commento precedente, mentre systemsetup -setremotelogin oncontinua a daresetInetDServiceEnabled failed for ssh because authorizationRef is NULL!
Ralphtor

Ti ricordi come hai cambiato la porta? Potresti cambiarlo di nuovo? Potrebbe non fare nulla, ma vale la pena provare ...
Blacklight Shining,

Ho letto i file di configurazione, sembra che la porta sia impostata correttamente su 21. Probabilmente questo non era il problema perché ho seguito le istruzioni per un altro Mac e ssh ha dato gli stessi errori. Per l'onestà, il Mac che ho testato era un Mac mini con Lion e si lamentava che com.apple.DirectoryServices.plistnon esiste più (come è stato rimosso in Lion), ma questo non dovrebbe essere un grosso problema perché ssh mi ha dato esattamente lo stesso errore che nel iMac.
Ralphtor,

3

Tre soluzioni che potresti prendere in considerazione. Innanzitutto, prova la modalità disco di destinazione. Se la modalità utente singolo funziona, anche la modalità disco di destinazione dovrebbe funzionare.

Una volta avviato in modalità disco di destinazione, collegalo all'altro sistema in uso (utilizzando firewire) e comunica al secondo sistema di avviarsi esternamente (tieni premuta l'opzione all'avvio). Una volta avviato il sistema operativo nel sistema danneggiato utilizzando l'hardware dei sistemi locali, apri Preferenze di Sistema e fai clic su "Condivisione" Seleziona la casella di controllo accanto a "Accesso remoto" per abilitarlo.

Spegni e riavvia e dovresti avere SSH attivo e funzionante.

Una seconda opzione è quella di rimuovere il disco rigido dal sistema danneggiato e avviarlo esternamente (in un contenitore esterno) o posizionarlo all'interno del sistema funzionale e avviare da lì.

Se nessuno di questi funziona, ma stai eseguendo un singolo utente, considera

cd /Library/Preferences
echo -n enabled > com.apple.ScreenSharing.launchd

Questo attiverà la condivisione dello schermo, lo userà per accedere alle Preferenze di Sistema sul computer remoto, apportare le modifiche (attivare SSH) e si è funzionali.


0

Perché non avviare sshd direttamente? Una volta che la rete è /usr/sbin/sshd -p 4212aperta, si aprirà un server SSH sulla porta 4212.


Grazie per la tua risposta. Ho eseguito il comando (per curiosità mi piacerebbe chiedere perché fosse necessario scrivere il percorso completo /usr/sbin/). Se corro topsu iMac vedo un processo chiamato sshd, quindi dovrebbe aver funzionato. Tuttavia, quando mi collego a un computer con un cavo Ethernet, cerco l'IP di iMac ifconfiged ssh 192.168.0.3 -p 4212ssh: connect to host 192.168.0.3 port 4212: Operation timed out
eseguo

Vorrei anche ricordare che shutdown -h nowora non funziona per spegnere l'iMac. Ho dovuto spegnerlo manualmente
Ralphtor,

Tendo a scrivere percorsi completi nelle mie risposte per evitare sorprese dovute a variabili PATH mal configurate. Uso questo comando spesso e funziona per me, su 10.6 e 10.7, anche se non devo ammetterlo in modalità utente singolo. Ti stai connettendo in ssh come root?
cdelacroix,

Come mi collego come root? Ho provato ssh root@192.168.0.3 -p 4212e ho anche provato con i nomi utente di altri account che sono impostati in iMac e scade sempre. Se uso un'altra porta, invece di 4212 si lamenta "Connessione rifiutata", quindi qualcosa dovrebbe funzionare, perché sembra rispondere alla porta giusta. Tuttavia non riesco ancora a collegarmi
Ralphtor,

Il server potrebbe non essere in grado di generare una shell? Puoi provare ssh -vvv root@192.168.0.3 -p 4212a vedere un output (davvero) dettagliato dal lato client, o anche sul lato server mettere ssh in modalità debug per vedere cosa sta succedendo (con sshd -d -p 4212).
cdelacroix,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.