Рано или поздно тебе понадобится дотянуться до Mac, который стоит не на этом столе. Зайти на домашний мини по SSH из кафе. Помочь родителям через общий экран, не вставая с дивана. Раздать офисный парк обновлениями, не выжигая канал. Положить файлы на сетевую шару для коллеги с Windows. Всё это - один раздел: Системные настройки -> Общий доступ (System Settings -> General -> Sharing). Это не отдельные приложения, а тумблеры, которые поднимают уже встроенные в macOS службы. Удалённый доступ к Mac - это не сторонний софт, а штатные демоны, и весь фокус в том, чтобы понимать, что именно включает каждый переключатель, какой порт открывается и кто после этого может постучаться.
Боль в том, что Sharing выглядит как набор безобидных галочек, а под капотом каждая - это сетевая служба, слушающая порт. Включил не глядя - и у тебя на ноутбуке в публичном Wi-Fi открыт sshd с парольным входом. Поэтому разбираем не где галочка, а что она делает, как это проверить из терминала и как не прострелить себе ногу.
Все тумблеры раздела Общий доступ - это, по сути, обёртки над launchd-службами и firewall-правилами. macOS не изобретает велосипед: SSH - это OpenSSH, файлы по сети - встроенный SMB-сервер, экран - сервер ARD/VNC. Галочка в интерфейсе лишь грузит соответствующий LaunchDaemon и при необходимости открывает порт.

Удалённый вход: SSH на Mac по-взрослому
Самый частый сценарий - ssh mac. В разделе Общий доступ есть тумблер Удалённый вход (Remote Login). Включаешь его - и macOS поднимает launchd-службу com.openssh.sshd, тот самый системный OpenSSH. Это не cron, не systemd - это launchd, демон стартует по запросу при подключении на 22 порт. Проверить, что служба жива, можно так:
Код: Выделить всё
sudo launchctl print system/com.openssh.sshd | head -20Код: Выделить всё
sudo lsof -iTCP:22 -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 12944 root 5u IPv6 0x... 0t0 TCP *:ssh (LISTEN)
sshd 12944 root 6u IPv4 0x... 0t0 TCP *:ssh (LISTEN)Тумблер можно дёргать и без мыши - это важно для скриптов и для парка машин. Включение/выключение удалённого входа делается через systemsetup:
Код: Выделить всё
sudo systemsetup -setremotelogin on
sudo systemsetup -getremotelogin
Remote Login: OnКод: Выделить всё
dseditgroup -o read com.apple.access_sshКод: Выделить всё
ssh-keygen -t ed25519 -C "me@laptop"
ssh-copy-id admin@mac-mini.localКод: Выделить всё
Host mini
HostName mac-mini.local
User admin
IdentityFile ~/.ssh/id_ed25519
UseKeychain yes
AddKeysToAgent yesКогда всё работает по ключам, парольный вход надо прибить. Правишь /etc/ssh/sshd_config (или, что чище, кладёшь файл-дроп-ин в /etc/ssh/sshd_config.d/), ставишь PasswordAuthentication no и PermitRootLogin no. Демон перечитает настройки при следующем запуске службы.
Грабли SSH. Если используешь .local-имена (mac-mini.local) - это Bonjour/mDNS, он работает только в одной подсети. Из интернета так не достучишься, нужен реальный адрес или VPN. Вторая грабля свежая: в macOS 26 Tahoe Apple выпилила старый алгоритм ssh-dss - если у тебя где-то остался древний ключ DSA, он просто перестанет приниматься, надо мигрировать на ed25519. И третья, приятная: Tahoe - первая macOS, где FileVault-том можно разблокировать прямо по SSH с экрана входа на Apple Silicon. Раньше зашифрованный Mac после ребута висел на запросе пароля и по сети был недоступен до ручного логина; теперь можно зайти по ssh, ввести пароль администратора и доразблокировать машину удалённо. Для удалённых серверов на Mac это меняет правила игры.
Общий экран, VNC и удалённое управление парком
Screen sharing mac - это второй по востребованности тумблер. В Общем доступе их на самом деле два разных, и их легко перепутать.
- Общий экран (Screen Sharing) - лёгкий вариант для своих. Поднимает сервер на базе VNC (порт 5900) плюс apple-овский слой ARD. Подключаешься с другого Mac через приложение Просмотр экрана или просто Finder -> Переход -> Подключиться к серверу -> vnc://адрес. Для своих устройств в одном Apple ID экран можно расшарить вообще через iCloud, минуя проброс портов: открываешь приложение Сообщения или контекстное меню устройства - и видишь экран другого своего Mac хоть из другой сети.
- Удалённое управление (Remote Management) - это серверная часть Apple Remote Desktop (ARD), для админа парка машин. Включает всё то же, что Screen Sharing, плюс права на копирование файлов, установку пакетов, отправку команд, инвентаризацию. Кнопка Параметры рядом с тумблером даёт чекбоксы привилегий по каждому пользователю.
vnc mac во внешний мир - тонкий момент. Чтобы пустить сторонний VNC-клиент (например, с Windows или iPad), в параметрах надо явно включить пункт Зрители VNC могут управлять экраном с паролем и задать пароль. Но учти: классический VNC-пароль - это слабая, исторически дырявая схема (ограничение в 8 символов, устаревшее шифрование канала). Никогда не выставляй голый VNC в интернет. Только внутри доверенной сети или через SSH-туннель:
Код: Выделить всё
ssh -L 5900:localhost:5900 admin@mac-mini.local
# затем в Finder: vnc://localhost:5900Из терминала состояние ARD-агента видно так:
Код: Выделить всё
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -helpФайлы, интернет, кэш контента и Continuity
Общий доступ к файлам. Тумблер Общий доступ к файлам поднимает встроенный SMB-сервер (тот же протокол, что у Windows-шар). AFP давно мёртв, по умолчанию это SMB. Расшаренные папки и права лежат за кнопкой Параметры; пользователь с Windows цепляется по двойному обратному слешу с адресом, Mac - через Finder -> Подключиться к серверу -> smb://адрес. Под капотом конфигурация - это связка стандартного smbd и apple-овской надстройки; проверить, что порт 445 слушается, можно тем же lsof -iTCP:445 -sTCP:LISTEN.
Совместный доступ к интернету (Internet Sharing). Превращает Mac в роутер: берёт интернет с одного интерфейса (скажем, Ethernet или iPhone по USB) и раздаёт на другой (Wi-Fi или Thunderbolt-мост). Удобно в командировке, когда есть только кабель, а ноутбуку соседа нужен Wi-Fi. Раздаёт DHCP и NAT штатно. Грабля: на корпоративных машинах раздача часто заблокирована профилем MDM, и тумблер будет серым.
Кэширование контента (Content Caching). Это серьёзная вещь для офиса и почему-то малоизвестная. Включаешь тумблер - и Mac становится локальным кэшем обновлений macOS/iOS, приложений из App Store, iCloud-данных. Первое устройство в сети качает обновление из интернета, остальные забирают его уже с этого Mac по локалке. Для парка из полусотни машин это разница между забитым на день каналом и спокойным апдейтом за минуты. Управляется из командной строки штатной утилитой:
Код: Выделить всё
sudo AssetCacheManagerUtil status
sudo AssetCacheManagerUtil settingsКод: Выделить всё
sudo AssetCacheManagerUtil reloadSettingsAirDrop и Continuity. AirDrop - это не классический сетевой шар, а одноранговый обмен поверх Bluetooth (для обнаружения) и прямого Wi-Fi (для передачи), без участия роутера. Поэтому он работает даже там, где нет общей сети. Continuity (Универсальный буфер обмена, Handoff, Sidecar, iPhone как веб-камера) держится на той же связке Bluetooth + Wi-Fi + общий Apple ID. Тонкость для диагностики: если AirDrop или Continuity отвалились, в 90 процентах случаев виноват выключенный Bluetooth или разные Apple ID на устройствах, а не сеть.
Безопасность доступа: не открой лишнего
Каждый включённый тумблер Общего доступа - это слушающий порт и потенциальная дверь. Дисциплина простая.
- Включай ровно то, что нужно прямо сейчас, и гаси, когда не нужно. SSH на ноутбуке в дороге - выключай.
- SSH - только по ключам, PasswordAuthentication no, root-логин запрещён.
- VNC и SMB - никогда голыми в интернет. Только локальная доверенная сеть или SSH-туннель/VPN.
- Помни про штатный фаервол приложений: Системные настройки -> Сеть -> Брандмауэр. Он фильтрует входящие по приложениям, но службы Sharing система пропускает автоматически - то есть фаервол тебя от открытого sshd не спасёт, спасёт только выключенный тумблер или правильный sshd_config.
- Проверяй, что реально слушает наружу: sudo lsof -iTCP -sTCP:LISTEN -P -n покажет все сервисы и порты разом, без подмены имён.
Мини-лаба: подними удалённый доступ руками
Нужен второй Mac в той же сети (или виртуалка). Делаем по шагам.
- На целевой машине: Системные настройки -> Общий доступ -> включи Удалённый вход. Проверь из терминала: sudo systemsetup -getremotelogin должно вернуть On.
- Глянь, кто слушает 22 порт: sudo lsof -iTCP:22 -sTCP:LISTEN. Убедись, что видишь sshd.
- С клиента сгенерируй ключ ed25519 и закинь его: ssh-keygen -t ed25519, затем ssh-copy-id user@имя.local.
- Зайди по ssh user@имя.local без пароля - значит, ключ принят.
- Подними туннель для VNC: ssh -L 5900:localhost:5900 user@имя.local, на целевой машине включи Общий экран, открой на клиенте vnc://localhost:5900. Экран должен появиться через зашифрованный канал.
- Включи Кэширование контента и выполни sudo AssetCacheManagerUtil status. Посмотри, что служба активна.
- Прибери за собой: выключи Удалённый вход и Общий экран, если это не постоянный сервер.
- Какую launchd-службу поднимает тумблер Удалённый вход и какой утилитой проверить, что он реально слушает порт 22?
- Почему нельзя одновременно держать включёнными Общий экран и Удалённое управление?
- Как безопасно подключиться к VNC на Mac через интернет, не выставляя порт 5900 наружу?
- Что даёт Кэширование контента в офисе и какой командой посмотреть его статус?
Раздел Общий доступ - это пульт штатных сетевых служб macOS: SSH (OpenSSH через launchd), SMB-файлы, экран (VNC/ARD), удалённое управление парком (ARD/kickstart), раздача интернета и локальный кэш обновлений. Каждый тумблер открывает порт, поэтому правило одно: включай осознанно, SSH - по ключам, VNC и SMB - только через туннель или доверенную сеть, и всегда проверяй lsof, кто реально слушает наружу. В Tahoe вдобавок появилась разблокировка FileVault по SSH - удалённое администрирование Mac стало заметно удобнее.