Włącz SSH na komputerze Mac w trybie pojedynczego użytkownika


10

Mam iMaca, do którego mogę uzyskać dostęp tylko w trybie pojedynczego użytkownika, z powodu poważnego uszkodzenia sprzętu. Dołączyłem do niego kolejny komputer za pomocą kabla Ethernet. Chciałbym zalogować się zdalnie do iMaca przez SSH. IMac działa w systemie OS X 10.6.4.

Znalazłem podobne odpowiedzi, ale to, co próbowałem, zawsze kończyło się niepowodzeniem.

Próbowałem systemsetup -setremotelogin oni zwraca następujący komunikat o błędzie:

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

Chociaż launchctl load -w /System/Library/LaunchDaemons/ssh.plistdaje:

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

Co powinienem zrobić?


Can't assign requested addresswydaje mi się, że nie ma żadnego połączenia sieciowego. Myślę, że w trybie pojedynczego użytkownika trzeba użyć ifconfiglub ifupwłączyć sieć.
Blacklight Shining

@BlacklightShining dzięki! Mam małe doświadczenie z tych poleceń, myślę, że z Mac byłoby bardziej właściwe użycie networksetuplub ipconfigkrytyki. Czy masz pojęcie o tym, jakie polecenia powinienem wydać, aby inny komputer mógł połączyć się z komputerem iMac za pomocą jednego kabla Ethernet? Lub alternatywnie, aby podłączyć iMaca do sieci Wi-Fi chronionej WPA2?
Ralphtor,

Sam nie jestem pewien. Nawiasem man $program_namemówiąc, możesz pobrać stronę podręcznika dla prawie każdego programu . Rzucę okiem i zobaczę, czy mogę coś wymyślić, aby spróbować ...
Blacklight Shining

Odpowiedzi:


8

Wygląda na to, że musisz załadować kilka dodatków:

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

Następnie zrób to, co próbowałeś wcześniej:

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

Po tym myślę, że możesz po prostu podłączyć kabel Ethernet do obu komputerów, aby utworzyć sieć ad-hoc. ifconfig en0 | grep inetna maszynie docelowej powinien uzyskać ci swój adres IP, a potem wszystko gotowe. :)


Dzięki za radę, pierwsze polecenia były dobre. Niestety w ostatnim poleceniu komputer odpowiedział: DNSServiceRegister("ssh"): -65563, DNSServiceRegister("sftp-ssh"): -65563, z tych dwóch komunikatów powtórzono dwukrotnie. Więc nie mogę połączyć się z ssh. Pamiętam niejasno, że zmieniłem port dla przychodzących połączeń ssh, więc prawdopodobnie to moja wina, ale byłbym wdzięczny za wszelką pomoc
Ralphtor

Muszę wyjaśnić: launchctl load -w /System/Library/LaunchDaemons/ssh.plistdaje mi błąd, o którym wspomniałem w poprzednim komentarzu, jednocześnie systemsetup -setremotelogin ondajesetInetDServiceEnabled failed for ssh because authorizationRef is NULL!
Ralphtor,

Czy pamiętasz, jak zmieniłeś port? Czy mógłbyś to zmienić z powrotem? To może nic nie zrobić, ale warto spróbować ...
Blacklight Shining

Czytam pliki konfiguracyjne, wygląda na to, że port jest poprawnie ustawiony na 21. Prawdopodobnie to nie był problem, ponieważ postępowałem zgodnie z instrukcjami dla innego komputera Mac i ssh podał te same błędy. Szczerze mówiąc, Mac, który testowałem, był komputerem Mac mini z Lionem i narzekał, że com.apple.DirectoryServices.plistjuż nie istnieje (ponieważ został usunięty w Lionie), ale to nie powinno być dużym problemem, ponieważ ssh dał mi dokładnie taki sam błąd jak w iMac.
Ralphtor

3

Trzy rozwiązania, które możesz rozważyć. Najpierw wypróbuj tryb dysku docelowego. Jeśli tryb pojedynczego użytkownika działa, tryb dysku docelowego powinien również działać.

Po uruchomieniu w trybie dysku docelowego podłącz go do innego posiadanego systemu (za pomocą firewire) i powiedz drugiemu systemowi, aby uruchomił się zewnętrznie (przytrzymaj opcję uruchamiania). Gdy system operacyjny w uszkodzonym systemie uruchomi się przy użyciu lokalnego sprzętu systemowego, otwórz Preferencje systemowe i kliknij „Udostępnianie”. Zaznacz pole wyboru obok „Zdalne logowanie”, aby je włączyć.

Zamknij i uruchom ponownie, a powinieneś mieć włączony SSH.

Drugą opcją jest usunięcie dysku twardego z uszkodzonego systemu i uruchomienie z niego zewnętrznego (w zewnętrznej obudowie) lub umieszczenie go w systemie funkcjonalnym i uruchomienie z niego.

Jeśli żaden z nich nie działa, ale używasz jednego użytkownika, rozważ to

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

Spowoduje to włączenie udostępniania ekranu, skorzystanie z niego, aby uzyskać dostęp do Preferencji systemowych na zdalnym komputerze, wprowadzić zmiany (włączyć SSH) i będziesz działać.


0

Dlaczego nie uruchomić bezpośrednio sshd? Po uruchomieniu sieci /usr/sbin/sshd -p 4212otworzy serwer ssh na porcie 4212.


Dzięki za odpowiedź. Wykonałem polecenie (z ciekawości chciałbym zapytać, dlaczego trzeba napisać pełną ścieżkę /usr/sbin/). Jeśli uruchomię topna komputerze iMac, zobaczę wywołany proces sshd, więc powinien był zadziałać. Kiedy jednak łączę się z komputerem za pomocą kabla Ethernet, poszukaj adresu IP iMaca ifconfigi uruchom ssh 192.168.0.3 -p 4212na innym komputerze, na którym jest napisanessh: connect to host 192.168.0.3 port 4212: Operation timed out
Ralphtor,

Powinienem również wspomnieć, że shutdown -h nowteraz nie działa, aby zamknąć iMaca. Musiałem wyłączyć go ręcznie
Ralphtor,

W moich odpowiedziach piszę pełne ścieżki, aby uniknąć niespodzianek z powodu źle skonfigurowanych zmiennych PATH. Często używam tego polecenia i działa ono dla mnie w wersjach 10.6 i 10.7, chociaż muszę przyznać, że nie w trybie pojedynczego użytkownika. Czy łączysz się w ssh jako root?
cdelacroix,

Jak połączyć się jako root? Próbowałem, ssh root@192.168.0.3 -p 4212a nawet próbowałem z nazwami użytkowników innych kont skonfigurowanych w iMacu i zawsze upływa limit czasu. Jeśli użyję innego portu, zamiast 4212 narzeka „Odmowa połączenia”, więc coś powinno działać, ponieważ wydaje się, że odpowiada na właściwy port. Jednak nadal nie mogę się połączyć
Ralphtor,

Serwer może nie być w stanie odrodzić powłoki? Możesz spróbować ssh -vvv root@192.168.0.3 -p 4212zobaczyć (naprawdę) pełne dane wyjściowe po stronie klienta, a nawet po stronie serwera przełącz ssh w tryb debugowania, aby zobaczyć, co się dzieje (z sshd -d -p 4212).
cdelacroix,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.