Включить SSH на Mac в однопользовательском режиме


10

У меня есть iMac, к которому я могу получить доступ только в однопользовательском режиме из-за серьезного повреждения оборудования. Я подключил к нему другой компьютер с помощью кабеля Ethernet. Я хотел бы удаленно войти в iMac через SSH. IMac работает под управлением OS X 10.6.4.

Я сталкивался с подобными ответами, но то, что я пробовал, всегда терпело неудачу

Я попытался, systemsetup -setremotelogin onи он возвращает следующее сообщение об ошибке:

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

Пока launchctl load -w /System/Library/LaunchDaemons/ssh.plistдает:

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

Что мне делать?


Can't assign requested addressзвучит для меня так, как будто у него нет сетевого подключения. Я думаю, что в однопользовательском режиме вам придется использовать ifconfigили ifupвключить сеть.
Blacklight Shining

@ BlacklightShining спасибо! У меня мало опыта с этими командами, я думаю, что с Mac было бы более целесообразно использовать networksetupили ipconfig, однако. У вас есть представление о том, какие команды я должен дать, чтобы другой компьютер подключился к iMac через один кабель Ethernet? Или, в качестве альтернативы, подключить iMac к сети Wi-Fi, защищенной WPA2?
Ральфтор

Я сам не уверен. man $program_nameКстати, вы можете получить справочную страницу практически для любой программы . Я посмотрю и посмотрю, смогу ли я придумать что-нибудь для вас, чтобы попробовать…
Blacklight Shining

Ответы:


8

Похоже, вам нужно загрузить еще несколько списков:

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

Затем сделайте то, что вы пытались раньше:

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

После этого, я думаю, вы можете просто подключить кабель Ethernet к обоим компьютерам для создания специальной сети. ifconfig en0 | grep inetна целевой машине должен получить свой IP-адрес, и тогда все готово. :)


Спасибо за ваш совет, первые команды были хорошими. К сожалению , до последней команды компьютер ответил: DNSServiceRegister("ssh"): -65563, DNSServiceRegister("sftp-ssh"): -65563, с этими двумя сообщениями повторяется дважды. Поэтому я не могу подключиться с помощью SSH. Я смутно помню, как сменил порт для входящих SSH-соединений, так что это, вероятно, моя вина, но я был бы признателен за любую помощь
Ralphtor

Я должен уточнить: launchctl load -w /System/Library/LaunchDaemons/ssh.plistдает мне ошибку, которую я упомянул в предыдущем комментарии, в то время как systemsetup -setremotelogin onпродолжает даватьsetInetDServiceEnabled failed for ssh because authorizationRef is NULL!
Ralphtor

Вы помните, как вы изменили порт? Не могли бы вы изменить это обратно? Это может ничего не делать, но стоит попробовать…
Blacklight Shining

Я прочитал файлы конфигурации, кажется, что порт правильно установлен на 21. Возможно, это не было проблемой, потому что я следовал инструкциям для другого Mac, и ssh выдал те же ошибки. Честно говоря, Mac, который я тестировал, был Mac mini с Lion, и он жаловался, что его com.apple.DirectoryServices.plistбольше не существует (как это было удалено в Lion), но это не должно быть большой проблемой, потому что ssh дал мне точно такую ​​же ошибку, как и в IMAC.
Ральфтор

3

Три решения, которые вы могли бы рассмотреть. Сначала попробуйте режим целевого диска. Если работает однопользовательский режим, то должен работать и режим целевого диска.

Как только он запустится в режиме целевого диска, подключите его к другой вашей системе (используя firewire) и скажите второй системе, что она загружается извне (удерживая опцию при загрузке). Как только ОС в поврежденной системе загружается с использованием оборудования локальной системы, откройте Системные настройки и нажмите «Общий доступ». Установите флажок рядом с «Удаленный вход», чтобы включить его.

Завершите работу и перезапустите, и у вас должен быть запущен SSH.

Вторым вариантом является удаление жесткого диска из поврежденной системы и загрузка с него извне (во внешнем корпусе) или размещение его внутри функциональной системы и загрузка с него.

Если ни один из этих способов не работает, но вы работаете с одним пользователем, подумайте

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

Это включит общий доступ к экрану, используйте его для доступа к Системным настройкам на удаленном компьютере, внесите изменения (включите SSH) и вы работаете.


0

Почему бы не запустить sshd напрямую? Как только сеть /usr/sbin/sshd -p 4212будет запущена, откроется ssh-сервер на порту 4212.


Спасибо за Ваш ответ. Я выполнил команду (из любопытства я хотел бы спросить, зачем было писать полный путь /usr/sbin/). Если я запускаю topна iMac, я вижу процесс, вызванный sshd, поэтому он должен был работать. Однако, когда я соединяюсь с компьютером с помощью кабеля Ethernet, ищите IP-адрес iMac ifconfigи запускайте ssh 192.168.0.3 -p 4212на другом компьютере, на котором написаноssh: connect to host 192.168.0.3 port 4212: Operation timed out
Ralphtor

Я должен также упомянуть, что shutdown -h nowтеперь не работает, чтобы закрыть iMac. Я должен был выключить это вручную
Ralphtor

Я склонен писать полные пути в моих ответах, чтобы избежать неожиданностей из-за плохо настроенных переменных PATH. Я часто использую эту команду, и она работает для меня, на 10.6 и 10.7, хотя я не должен допускать этого в однопользовательском режиме. Вы подключаетесь в ssh как root?
cdelacroix

Как мне подключиться как root? Я пытался ssh root@192.168.0.3 -p 4212и даже пытался использовать имена пользователей других учетных записей, которые настроены в iMac, и время ожидания всегда истекло. Если я использую другой порт, вместо 4212 он жалуется на «Отказ в соединении», поэтому что-то должно работать, потому что он, кажется, отвечает на правильный порт. Однако я все еще не могу соединиться
Ральфтор

Сервер не сможет порождать оболочку? Вы можете попытаться ssh -vvv root@192.168.0.3 -p 4212увидеть (действительно) подробный вывод со стороны клиента или даже на стороне сервера перевести ssh в режим отладки, чтобы увидеть, что происходит (с sshd -d -p 4212).
cdelacroix
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.