Введение / Зачем это нужно
SSH (Secure Shell) — это протокол для безопасного удалённого доступа к вашему Mac. Включив SSH-сервер, вы сможете подключаться к компьютеру с другого устройства через терминал, выполнять команды, передавать файлы и управлять системой. Это особенно полезно для системных администраторов, разработчиков или если вы хотите получить доступ к Mac, находящемуся в другой комнате или даже в другом городе. После активации вы получите полноценный удалённый доступ без необходимости использования графического интерфейса.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть Mac с macOS 10.14 Mojave или новее (инструкция актуальна для macOS Ventura и Sonoma).
- Вы вошли в учётную запись с правами администратора.
- Ваш Mac подключён к сети (если планируете удалённые подключения).
- Рекомендуется иметь статический IP-адрес или настроить Dynamic DNS, если вы хотите подключаться извне локальной сети.
Шаг 1: Включите SSH через Системные настройки
Это наиболее простой способ для пользователей, предпочитающих графический интерфейс.
- Откройте меню Apple () и выберите Системные настройки.
- В зависимости от версии macOS:
- Для macOS Ventura и Sonoma: в левом боковом меню выберите Общие (General), затем прокрутите вниз до раздела Удалённый вход (Remote Login).
- Для macOS Monterey и старее: откройте Общий доступ (Sharing) и найдите Удалённый вход (Remote Login) в списке служб.
- Активируйте переключатель рядом с Удалённый вход. Если потребуется, введите пароль администратора в появившемся диалоге.
- По умолчанию доступ разрешён для всех пользователей. Чтобы ограничить, нажмите Параметры... (или Дополнительно) и выберите Только эти пользователи, затем добавьте нужных из списка.
💡 Совет: Для безопасности рекомендуется разрешать доступ только конкретным учётным записям с минимальными привилегиями, а не всем пользователям.
Шаг 2: Включите SSH через терминал (альтернативный способ)
Для опытных пользователей или автоматизации можно использовать командную строку.
- Откройте Терминал (Terminal) из папки Утилиты или через Spotlight (Cmd+Пробел, введите "Терминал").
- Выполните команду:
Введите пароль администратора при запросе (символы не отображаются).sudo systemsetup -setremotelogin on - Чтобы выключить SSH-сервер позже, используйте:
sudo systemsetup -setremotelogin off
Эта команда включает тот же самый SSH-сервер, что и через Системные настройки, но без графического интерфейса.
Шаг 3: Настройте параметры доступа
После включения SSH важно настроить, какие пользователи могут подключаться, чтобы минимизировать риски.
- Вернитесь в раздел Удалённый вход в Системных настройках (как описано в Шаге 1).
- Нажмите Параметры... (или Дополнительно).
- Выберите один из вариантов:
- Все пользователи: любой локальный пользователь может подключаться (не рекомендуется для публичных сетей).
- Только эти пользователи: добавьте конкретных пользователей из списка. Рекомендуется использовать учётные записи без прав администратора для повседневных задач.
- Нажмите OK для сохранения.
⚠️ Важно: Убедитесь, что у выбранных пользователей есть пароль, даже если вы используете SSH-ключи для аутентификации.
Шаг 4: Проверьте работу SSH-сервера
Теперь убедитесь, что сервис запущен и готов к подключениям.
- В Терминале проверьте статус службы:
Если вы видите строку сsudo launchctl list | grep sshcom.openssh.sshd, значит сервис активен. Если нет, запустите вручную:sudo launchctl start com.openssh.sshd - Для тестового локального подключения (с того же Mac) выполните:
Заменитеssh ваш_пользователь@localhostваш_пользовательна имя вашей учётной записи (узнайте черезwhoami). При первом подключении вы увидите сообщение о fingerprint хоста — введитеyesдля подтверждения. Затем введите пароль пользователя. - Если подключение прошло успешно, вы окажетесь в оболочке shell вашего Mac. Чтобы выйти, введите
exit.
Шаг 5: Настройте брандмауэр (опционально, но рекомендуется)
Если на вашем Mac включён встроенный брандмауэр или вы используете внешний роутер, необходимо разрешить трафик на порт 22 (стандартный порт SSH).
- Брандмауэр macOS:
- Откройте Системные настройки → Сеть → Брандмауэр (в Ventura: Системные настройки → Сеть → Брандмауэр).
- Нажмите Параметры брандмауэра... (или Дополнительно).
- Убедитесь, что для Удалённый вход (SSH) стоит галочка в колонке "Разрешить входящие подключения". Если нет, добавьте правило:
- Нажмите + и выберите Удалённый вход из списка служб.
- Установите флажок и нажмите OK.
- Роутер (для доступа из интернета):
- Если вы хотите подключаться к Mac извне локальной сети, настройте проброс портов (port forwarding) на вашем роутере: перенаправьте внешний порт 22 на локальный IP-адрес вашего Mac и порт 22.
- Узнайте локальный IP вашего Mac через
ifconfig(ищитеen0илиen1и адресinet). - Для доступа извне используйте внешний IP вашего роутера (или Dynamic DNS). Внимание: открытие порта 22 в интернете повышает риски взлома — обязательно измените стандартный порт SSH и используйте SSH-ключи.
Проверка результата
После выполнения всех шагов, вы должны иметь работающий SSH-сервер. Для окончательной проверки:
- Определите локальный IP-адрес вашего Mac:
Пример вывода:ifconfig | grep "inet " | grep -v 127.0.0.1inet 192.168.1.105. - С другого компьютера в той же сети (например, ноутбука или телефона с SSH-клиентом) выполните:
Заменитеssh ваш_пользователь@192.168.1.105ваш_пользовательи192.168.1.105на ваши данные. - Если подключение успешно, вы увидите приглашение командной строки вашего Mac. Попробуйте выполнить простую команду, например,
lsилиpwd. - Для удалённого доступа из интернета (если настроили проброс портов) используйте внешний IP или домен вашего роутера.
Если всё работает, вы готовы к удалённому управлению Mac через SSH.
Возможные проблемы
При включении или использовании SSH могут возникнуть следующие типичные ошибки:
- Ошибка "Connection refused" или "No route to host"
- Причина: SSH-сервер не запущен, порт 22 закрыт брандмауэром или неверный IP-адрес.
- Решение:
- Проверьте статус службы:
sudo launchctl list | grep ssh. Если не активен, запустите:sudo launchctl start com.openssh.sshd. - Убедитесь, что брандмауэр macOS разрешает порт 22 (см. Шаг 5).
- Проверьте IP-адрес Mac через
ifconfigи убедитесь, что он в той же сети, что и клиент.
- Проверьте статус службы:
- Ошибка "Permission denied (publickey,password)"
- Причина: Неверное имя пользователя, пароль или отсутствует SSH-ключ в
~/.ssh/authorized_keys. - Решение:
- Убедитесь, что используете правильное имя пользователя (то, что отображается в
whoamiна целевом Mac). - Проверьте, что учётная запись разрешена для удалённого входа (Шаг 3).
- Если используете ключи, скопируйте публичный ключ на Mac в
~/.ssh/authorized_keysс правами 600. - Сбросьте пароль пользователя через Системные настройки → Пользователи и группы, если забыли.
- Убедитесь, что используете правильное имя пользователя (то, что отображается в
- Причина: Неверное имя пользователя, пароль или отсутствует SSH-ключ в
- SSH-сервер не включается через System Preferences
- Причина: Конфликт с другим ПО (например, сторонние SSH-серверы) или повреждение настроек.
- Решение:
- Попробуйте включить через терминал:
sudo systemsetup -setremotelogin on. - Проверьте, нет ли других служб, слушающих порт 22:
sudo lsof -i :22. - Если проблема persists, перезагрузите Mac и попробуйте снова.
- Просмотрите логи SSH:
sudo log show --predicate 'process == "sshd"' --last 1h.
- Попробуйте включить через терминал:
- Подключение разрывается или очень медленное
- Причина: Сетевые задержки, настройки DNS или неоптимальные параметры SSH.
- Решение:
- Убедитесь, что оба компьютера в одной сети без перегруженных роутеров.
- Попробуйте использовать IP-адрес вместо hostname.
- На стороне сервера (вашем Mac) отредактируйте
/etc/ssh/sshd_config(с правами sudo) и добавьтеUseDNS noдля ускорения, затем перезапустите сервис:sudo launchctl stop com.openssh.sshd && sudo launchctl start com.openssh.sshd. - Для медленных соединений можно включить сжатие: добавьте
Compression yesвsshd_config.
- Брандмауэр или антивирус блокирует подключения
- Причина: Встроенный брандмауэр или сторонний софт (например, Little Snitch) блокирует порт 22.
- Решение:
- Проверьте настройки брандмауэра macOS (Шаг 5) и убедитесь, что правило для SSH разрешено.
- Если используете антивирус или фаервол, добавьте исключение для
sshd(обычно/usr/sbin/sshd) и порта 22. - Временно отключите сторонний софт для диагностики.
Если проблема не решена, проверьте, не блокирует ли ваш интернет-провайдер входящие SSH-подключения (редко, но бывает), или обратитесь к документации Apple: man sshd и man ssh_config.