# RDP FIDO для macOS — пребета

Один пакет для Mac на Intel и Apple Silicon. Он ставит три вещи:

- **клиент RDP FIDO** — то же окно, что в Windows: плитки рабочих столов, вкладки SSH и «Помощь» (DeskHand),
  те же диалоги и настройки, шесть языков интерфейса, светлая и тёмная тема;
- **шлюз RDP-FIDO-GATE для самого Mac** — держит закрытыми «Общий экран» (VNC, порт 5900) и, по желанию, SSH и
  открывает их только для зарегистрированного ключа FIDO2;
- **хост FIDO Stream** — поток экрана Mac с низкой задержкой для зрителей RDP FIDO.

Версия 1.28.2, пребета. Пока сборка проверена на одном Mac (Intel, macOS 12). Если у вас Apple Silicon,
macOS 13–15 или другой ключ безопасности — поставьте пакет и напишите нам, что получилось:
<https://new-imobile.com/contact>.

Английский вариант: [README.en.md](README.en.md).

## Что нужно

- macOS 10.15 или новее (проверено на macOS 12), Mac на Intel или Apple Silicon;
- ключ безопасности FIDO2 по USB (YubiKey и другие);
- для RDP — бесплатное приложение Microsoft **Windows App** из App Store (раньше называлось Microsoft Remote
  Desktop) или FreeRDP (`brew install freerdp`): клиент найдёт то, что установлено;
- на машинах, к которым подключаетесь, — шлюз RDP-FIDO-GATE для Windows или Linux, редакции Free достаточно.

## Установка

1. Скачайте [rdpfido-1.28.2-macos.pkg](rdpfido-1.28.2-macos.pkg) и сверьте сумму с [SHA256SUMS](SHA256SUMS):
   `shasum -a 256 ~/Downloads/rdpfido-1.28.2-macos.pkg`.
2. Пакет пока не подписан сертификатом Apple Developer ID, поэтому двойной щелчок macOS не пустит.
   - macOS 14 и раньше: щелчок с Control (или правой кнопкой) → «Открыть» → «Открыть».
   - macOS 15 и новее: попробуйте открыть пакет один раз, затем «Системные настройки» → «Конфиденциальность и
     безопасность» → внизу «Всё равно открыть».
   - Или в Терминале: `sudo installer -pkg ~/Downloads/rdpfido-1.28.2-macos.pkg -target /`.
3. Пакет ставит приложение **RDP FIDO** в «Программы», а шлюз, хост потока, командную строку и зритель потока — в
   `/usr/local/rdpfido`. Шлюз сам не включается: он начинает охранять Mac только после `setup` (ниже).

Обновление — тот же пакет новой версии поверх; сессии, ключи и настройки сохраняются.

## Клиент: подключиться к Windows или Linux

1. Откройте RDP FIDO из «Программ». Окно и порядок действий — как в Windows-клиенте.
2. «Добавить» → адрес машины и имя пользователя → «Зарегистрировать ключ…» → код, который показывает шлюз на той
   машине (`RdpFidoGate.exe code` в Windows, `sudo rdpfido-gate code` в Linux) → коснитесь ключа.
3. Щелчок по плитке → касание ключа → подключение. Тип сессии выбирается в её свойствах: RDP (Windows App или
   FreeRDP), FIDO Stream (свой зритель с аппаратным декодированием VideoToolbox) или SSH (консоль с сохранёнными
   командами и помощником ИИ).

Пароли RDP хранятся в связке ключей macOS. Сессии лежат в `~/Library/Application Support/rdpfido` в том же
формате, что у Windows-клиента. Командная строка: `/usr/local/rdpfido/bin/rdpfido help`.

Картинки на плитках RDP-сессий клиент снимает с окна FreeRDP, только если ему уже разрешена «Запись экрана»;
без разрешения плитки остаются со значком.

Вкладка «Помощь» — удалённая помощь DeskHand по коду: тот, кому вы помогаете, называет код, вы подключаетесь.
Для неё нужно место мастера в аккаунте new-imobile.com (14 дней бесплатно), подробнее —
<https://new-imobile.com/ru/rdp/#deskhand>.

## Шлюз: закрыть сам Mac ключом

1. Включите доступ, который будете охранять: «Системные настройки» → «Основные» → «Общий доступ» → «Общий экран»
   (и «Удалённый вход», если нужен SSH).
2. В Терминале:

   ```
   sudo /usr/local/rdpfido/bin/rdpfido-gate setup
   ```

   Шлюз ставит службу launchd, разрешения брандмауэра macOS и правило пакетного фильтра pf и выдаёт код
   регистрации ключа на 15 минут. Порт 5900 закрывается, как только зарегистрирован первый ключ.
3. На клиенте (Windows, Linux, Android или другой Mac): «Добавить» → адрес этого Mac → «Зарегистрировать ключ…» →
   код. Новый код: `sudo /usr/local/rdpfido/bin/rdpfido-gate code`.
4. SSH за тем же ключом: `sudo /usr/local/rdpfido/bin/rdpfido-gate ports add 22`.

Состояние: `sudo /usr/local/rdpfido/bin/rdpfido-gate status`. Уже открытые сессии при закрытии порта не рвутся:
pf пропускает только новые подключения с адресов, коснувшихся ключа.

## Поток FIDO Stream с Mac

Хост потока запускает шлюз в сеансе пользователя, который сейчас за экраном. Экран идёт аппаратным H.264 прямо с
поверхности экрана, без копирования через процессор; буфер обмена — в обе стороны (если это разрешено в
параметрах сессии), звук системы — на macOS 13 и новее. На macOS 12 поток идёт без звука системы; микрофон зрителя
на Mac слышно.

macOS спрашивает разрешения у самой программы, поэтому один раз добавьте
`/usr/local/rdpfido/bin/rdpfido-stream-host` в «Системные настройки» → «Конфиденциальность и безопасность»:

- «Запись экрана» — чтобы зритель видел экран;
- «Универсальный доступ» — чтобы работали мышь и клавиатура зрителя.

(В списке «+», затем Cmd+Shift+G и путь выше.) Проверка: `/usr/local/rdpfido/bin/rdpfido-stream-host permissions`.
В общем сеансе (несколько зрителей) Ctrl+Option+Shift+H на клавиатуре Mac возвращает управление тому, кто за
Mac; зритель нажать это сочетание за вас не может.

## Лицензия

На Mac первые полгода (182 дня) с первого запуска клиент работает как бесплатная редакция в Windows — с рекламной
плиткой и прежними ограничениями. Затем для подключения нужен **RDP FIDO Pro**: одна покупка Pro действует и в
Windows, и на Mac (<https://new-imobile.com/order/rdpgate?plan=pro>). Срок отсчитывается на сервере аккаунтов,
переустановка его не сбрасывает; окно «Аккаунт» показывает, до какого дня бесплатно. Шлюз на Mac лицензии не
требует.

## Известные ограничения пребеты

- Пакет и приложение подписаны нашим собственным сертификатом, не Apple Developer ID, и не прошли нотаризацию —
  отсюда шаг с «Открыть» при установке.
- Касание ключа — только ключи FIDO2 по USB; Touch ID ключом не служит.
- Виртуальный геймпад на хосте-Mac недоступен: для виртуального HID-устройства Apple требует особое разрешение.
- Сборка проверена на Intel Mac с macOS 12: на Apple Silicon и macOS 13–15 мы её ещё не запускали, звук системы
  с хоста (macOS 13+) — тоже.

## Удаление

```
sudo /usr/local/rdpfido/bin/rdpfido-gate uninstall
sudo rm -rf "/Applications/RDP FIDO.app" /usr/local/rdpfido
sudo pkgutil --forget com.imobile.rdpfido
```

Ключи и настройки шлюза остаются в `/Library/Application Support/rdpfido-gate`, сессии клиента — в
`~/Library/Application Support/rdpfido`; удалите эти папки, чтобы забыть их.

Сторонние компоненты (OpenSSL, libfido2, libcbor, SDL2, FFmpeg, openh264) и их лицензии —
`/usr/local/rdpfido/licenses`.
