---
read_when:
    - Настройка или отладка удалённого управления Mac
summary: поток приложения macOS для управления удаленным Gateway OpenClaw
title: Удаленное управление
x-i18n:
    generated_at: "2026-06-28T23:12:37Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 96ac4af5af9d3250f907818751120984106c3c7bcb1f3349d3f0678b4fefb120
    source_path: platforms/mac/remote.md
    workflow: 16
---

Этот процесс позволяет приложению macOS работать как полноценный пульт дистанционного управления для Gateway OpenClaw, запущенного на другом хосте (настольном компьютере/сервере). Приложение может подключаться напрямую к доверенным URL Gateway в LAN/Tailnet или управлять SSH-туннелем, если удаленный Gateway доступен только через loopback. Проверки состояния, пересылка голосового пробуждения и веб-чат используют одну и ту же удаленную конфигурацию из _Настройки → Общие_.

## Режимы

- **Локально (этот Mac)**: все запускается на ноутбуке. SSH не используется.
- **Удаленно через SSH (по умолчанию)**: команды OpenClaw выполняются на удаленном хосте. Приложение Mac открывает SSH-подключение с `-o BatchMode`, выбранным идентификатором/ключом и локальным пробросом порта.
- **Удаленно напрямую (ws/wss)**: без SSH-туннеля. Приложение Mac подключается к URL Gateway напрямую (например, через LAN, Tailscale, Tailscale Serve или публичный обратный прокси HTTPS).

## Удаленные транспорты

Удаленный режим поддерживает два транспорта:

- **SSH-туннель** (по умолчанию): использует `ssh -N -L ...` для перенаправления порта Gateway на localhost. Gateway будет видеть IP узла как `127.0.0.1`, потому что туннель является loopback.
- **Напрямую (ws/wss)**: подключается прямо к URL Gateway. Gateway видит реальный IP клиента.

В режиме SSH-туннеля обнаруженные имена хостов LAN/tailnet сохраняются как
`gateway.remote.sshTarget`. Приложение оставляет `gateway.remote.url` на локальной
конечной точке туннеля, например `ws://127.0.0.1:18789`, чтобы CLI, веб-чат и
локальная служба хоста узла использовали один и тот же безопасный loopback-транспорт.
Когда обнаружение возвращает и прямые IP Tailnet, и стабильные имена хостов, приложение
предпочитает Tailscale MagicDNS или имена LAN, чтобы удаленные подключения лучше
переживали изменения адресов.
Если локальный порт туннеля отличается от удаленного порта Gateway, задайте
`gateway.remote.remotePort` равным порту на удаленном хосте.

Автоматизацией браузера в удаленном режиме владеет хост узла CLI, а не
нативный узел приложения macOS. Приложение по возможности запускает установленную службу хоста узла;
если вам нужно управление браузером с этого Mac, установите/запустите ее с помощью
`openclaw node install ...` и `openclaw node start` (или запустите
`openclaw node run ...` на переднем плане), затем выберите этот узел с поддержкой браузера
как цель.

## Предварительные требования на удаленном хосте

1. Установите Node + pnpm и соберите/установите CLI OpenClaw (`pnpm install && pnpm build && pnpm link --global`).
2. Убедитесь, что `openclaw` находится в PATH для неинтерактивных оболочек (при необходимости создайте символьную ссылку в `/usr/local/bin` или `/opt/homebrew/bin`).
3. Только для транспорта SSH: откройте SSH с аутентификацией по ключу. Мы рекомендуем IP-адреса **Tailscale** для стабильной доступности вне LAN.

## Настройка приложения macOS

Чтобы предварительно настроить приложение без приветственного процесса:

```bash
openclaw-mac configure-remote \
  --ssh-target user@gateway.local \
  --local-port 18789 \
  --remote-port 18789 \
  --token "$OPENCLAW_GATEWAY_TOKEN"
```

Для Gateway, уже доступного в доверенной LAN или Tailnet, полностью пропустите SSH:

```bash
openclaw-mac configure-remote \
  --direct-url ws://192.168.0.202:18789 \
  --token "$OPENCLAW_GATEWAY_TOKEN"
```

Это записывает удаленную конфигурацию, помечает онбординг завершенным и позволяет приложению владеть
выбранным транспортом при запуске.

1. Откройте _Настройки → Общие_.
2. В разделе **OpenClaw запускается** выберите **Удаленно** и задайте:
   - **Транспорт**: **SSH-туннель** или **Напрямую (ws/wss)**.
   - **Цель SSH**: `user@host` (необязательный `:port`).
     - Если Gateway находится в той же LAN и объявляет себя через Bonjour, выберите его из обнаруженного списка, чтобы автоматически заполнить это поле.
   - **URL Gateway** (только напрямую): `wss://gateway.example.ts.net` (или `ws://...` для локального/LAN).
   - **Файл идентификатора** (дополнительно): путь к вашему ключу.
   - **Корень проекта** (дополнительно): путь удаленного checkout, используемый для команд.
   - **Путь CLI** (дополнительно): необязательный путь к запускаемой точке входа/бинарному файлу `openclaw` (заполняется автоматически, если объявлен).
3. Нажмите **Проверить удаленное подключение**. Успех означает, что удаленная команда `openclaw status --json` выполняется корректно. Сбои обычно означают проблемы с PATH/CLI; код выхода 127 означает, что CLI не найден на удаленной машине.
4. Проверки состояния и веб-чат теперь будут автоматически работать через выбранный транспорт.

## Веб-чат

- **SSH-туннель**: веб-чат подключается к Gateway через перенаправленный управляющий порт WebSocket (по умолчанию 18789).
- **Напрямую (ws/wss)**: веб-чат подключается прямо к настроенному URL Gateway.
- Отдельного HTTP-сервера WebChat больше нет.

## Разрешения

- Удаленному хосту нужны те же одобрения TCC, что и локальному (Автоматизация, Универсальный доступ, Запись экрана, Микрофон, Распознавание речи, Уведомления). Запустите онбординг на этой машине, чтобы выдать их один раз.
- Узлы объявляют свое состояние разрешений через `node.list` / `node.describe`, чтобы агенты знали, что доступно.

## Примечания по безопасности

- Предпочитайте loopback-привязки на удаленном хосте и подключайтесь через SSH, Tailscale Serve или доверенный прямой URL Tailnet/LAN.
- SSH-туннелирование использует строгую проверку ключа хоста; сначала доверьтесь ключу хоста, чтобы он существовал в `~/.ssh/known_hosts`.
- Если вы привязываете Gateway к интерфейсу не loopback, требуйте действительную аутентификацию Gateway: токен, пароль или обратный прокси с учетом идентичности с `gateway.auth.mode: "trusted-proxy"`.
- См. [Безопасность](/ru/gateway/security) и [Tailscale](/ru/gateway/tailscale).

## Процесс входа в WhatsApp (удаленно)

- Запустите `openclaw channels login --verbose` **на удаленном хосте**. Отсканируйте QR-код с помощью WhatsApp на телефоне.
- Повторно запустите вход на этом хосте, если срок действия аутентификации истек. Проверка состояния покажет проблемы со связью.

## Устранение неполадок

- **код выхода 127 / не найдено**: `openclaw` не находится в PATH для оболочек без входа в систему. Добавьте его в `/etc/paths`, rc-файл вашей оболочки или создайте символьную ссылку в `/usr/local/bin`/`/opt/homebrew/bin`.
- **Проба состояния не удалась**: проверьте доступность SSH, PATH и то, что Baileys вошел в систему (`openclaw status --json`).
- **Веб-чат завис**: подтвердите, что Gateway запущен на удаленном хосте и перенаправленный порт совпадает с WS-портом Gateway; интерфейсу требуется исправное WS-подключение.
- **IP узла показывает 127.0.0.1**: ожидаемо при SSH-туннеле. Переключите **Транспорт** на **Напрямую (ws/wss)**, если хотите, чтобы Gateway видел реальный IP клиента.
- **Панель управления работает, но возможности Mac недоступны**: это означает, что операторское/управляющее подключение приложения исправно, но подключение сопутствующего узла не подключено или у него отсутствует поверхность команд. Откройте раздел устройства в строке меню и проверьте, отображается ли Mac как `paired · disconnected`. Для конечных точек Tailscale Serve `wss://*.ts.net` приложение обнаруживает устаревшие прежние TLS-пины конечного сертификата после ротации сертификата, очищает устаревший пин, когда macOS доверяет новому сертификату, и автоматически повторяет попытку. Если сертификат не доверен системой или хост не является именем Tailscale Serve, задайте `gateway.remote.tlsFingerprint` равным ожидаемому отпечатку сертификата, проверьте сертификат или переключитесь на **Удаленно через SSH**.
- **Голосовое пробуждение**: триггерные фразы автоматически пересылаются в удаленном режиме; отдельный пересылатель не нужен.

## Звуки уведомлений

Выбирайте звуки для каждого уведомления из скриптов с `openclaw` и `node.invoke`, например:

```bash
openclaw nodes notify --node <id> --title "Ping" --body "Remote gateway ready" --sound Glass
```

Глобального переключателя «звук по умолчанию» в приложении больше нет; вызывающие стороны выбирают звук (или его отсутствие) для каждого запроса.

## Связанные разделы

- [Приложение macOS](/ru/platforms/macos)
- [Удаленный доступ](/ru/gateway/remote)
