Аутентификация
DR-Terminal поддерживает три способа аутентификации: пароль, приватный ключ и аппаратный ключ FIDO2 (YubiKey).
Пароль
Самый простой путь. Пароль, введённый для сохранённого подключения, попадает в защищённое хранилище платформы — никогда в JSON-конфигурацию. Если поле пароля пустое, приложение спрашивает его при каждом подключении.
Откат с открытого ключа на пароль: когда сервер отклоняет открытый ключ (например, его нет в authorized_keys), DR-Terminal автоматически запрашивает пароль для того же пользователя вместо разрыва соединения.
Приватный ключ
Принимаются ключи в форматах OpenSSH, PKCS#1, PKCS#8, ssh.com и PuTTY PPK (v2/v3) — формат определяется автоматически, поэтому ключ .ppk работает без предварительного преобразования. Вы можете:
- Вставить ключ напрямую в форму подключения.
- Воспользоваться менеджером ключей (Настройки → Безопасность → SSH-ключи) и выбрать сохранённый ключ. Импортируемые здесь файлы ключей могут быть также в виде необработанного двоичного DER.
Если ключ зашифрован парольной фразой, DR-Terminal запросит её при первом использовании ключа и затем хранит её только в памяти — как ssh-agent, одна разблокировка на запуск приложения; закрытие приложения снова блокирует все ключи. Импортированные зашифрованные ключи остаются в защищённом хранилище в исходном зашифрованном виде. Мы поддерживаем множество алгоритмов — RSA, ECDSA (P-256, P-384, P-521), Ed25519, Ed25519-SK, ECDSA-SK (FIDO).
Генератор ключей
В разделе Настройки → Безопасность есть мастер Сгенерировать SSH-ключ. Выберите тип (например, ed25519), задайте парольную фразу (необязательно — она защищает ключ даже внутри защищённого хранилища), и ключ будет сохранён локально. Комментарий ключа по умолчанию — ${user}@${host}@DR-Terminal, что удобно для опознания ключа на сервере. Открытый ключ можно скопировать в буфер обмена для ~/.ssh/authorized_keys на сервере.
Ключи в списке можно переименовывать на месте; если выбранное имя совпадает с существующим, приложение автоматически добавляет (2).
Конвертер ключей
Настройки → Безопасность → SSH-ключи → Конвертировать повторно сериализует приватный ключ между всеми распространёнными форматами — выберите источник (сохранённый ключ, файл или вставленный текст) и целевой формат, затем скопируйте, поделитесь или сохраните результат.
Форматы, в обе стороны:
| Формат | Чтение | Запись |
|---|---|---|
OpenSSH (BEGIN OPENSSH PRIVATE KEY) | ✓ | ✓ |
PKCS#8 (BEGIN PRIVATE KEY) | ✓ | ✓ |
PKCS#1 (BEGIN RSA PRIVATE KEY, только RSA) | ✓ | ✓ |
| PuTTY PPK — v2 и v3 | ✓ | ✓ |
Входными данными могут быть PEM (текст), PuTTY PPK или необработанный двоичный DER — формат определяется автоматически. Типы ключей: RSA, Ed25519 и ECDSA (P-256/384/521).
- Экспорт в PuTTY PPK теперь работает в обе стороны (раньше приложение могло только читать
.ppk). Выберите v3 (Argon2id KDF + HMAC-SHA-256, современный PuTTY) или v2 (старый PuTTY) с помощью селектора версии. Файлы, созданные таким образом, загружаются в PuTTY/puttygenбез изменений. - Необязательная парольная фраза для экспорта. Оставьте её пустой для незашифрованного ключа; задайте её — и результат будет зашифрован надёжным KDF для конкретного формата (bcrypt / PBKDF2 / Argon2id). См. Безопасность и данные → Экспортированные ключи.
- Если преобразование не удаётся (неверная парольная фраза источника, несовместимый формат), приложение теперь показывает настоящую причину вместо общей ошибки.
PKCS#1 описывает только ключи RSA, поэтому этот целевой формат предлагается только когда источником является ключ RSA.
Перевод парольного подключения на ключ
Редактировать authorized_keys вручную не обязательно. Для сохранённого подключения с паролем DR-Terminal предлагает пошаговый переход в двух местах:
- Список подключений — значок ключа на карточке парольного подключения запускает мастер миграции.
- Внутри сеанса — в меню терминала подключённого парольного сеанса есть пункт Переключить на SSH-ключ.
Оба запускают один и тот же процесс: выберите сохранённый ключ или сгенерируйте новый, DR-Terminal развернёт открытый ключ на сервере через существующий парольный вход, проверит, что аутентификация по ключу действительно работает, и только затем переключит сохранённое подключение на ключ. Если проверка не пройдёт, подключение останется без изменений.
Аппаратный ключ (FIDO2 / YubiKey)
DR-Terminal работает с ключами ed25519-sk и ecdsa-sk — и вы можете сгенерировать их прямо в приложении. Внешний ssh-keygen не требуется.
Генерация ключа на основе YubiKey в DR-Terminal
- Настройки → Безопасность → SSH-ключи → Сгенерировать SSH-ключ.
- Включите переключатель Аппаратный ключ. Выберите алгоритм — Ed25519-SK (рекомендуется) или ECDSA-SK.
- Коснитесь YubiKey, когда появится запрос. Приложение просит токен создать новые учётные данные и подписывает открытый ключ.
- Ключ сохраняется в менеджере ключей DR-Terminal. Скопируйте открытый ключ и вставьте его в
~/.ssh/authorized_keysна целевом сервере.
Windows Hello: на Windows запрос PIN для FIDO2 — это нативный диалог Windows Hello (PIN / отпечаток пальца / лицо), а не диалог внутри приложения.
Резидентные ключи (хранящиеся на самом YubiKey) избавляют от необходимости носить файл ключа — весь секрет находится на токене. Ключи, сгенерированные в DR-Terminal, нерезидентные: дескриптор учётных данных хранится в менеджере ключей и нужен вместе с токеном.
Использование существующего SK-ключа
Если у вас уже есть id_ed25519_sk / id_ecdsa_sk, сгенерированный в другом месте (например, через ssh-keygen -t ed25519-sk), импортируйте его через тот же менеджер ключей — DR-Terminal обрабатывает импортированные и сгенерированные SK-ключи одинаково.
Во время подключения
DR-Terminal запрашивает касание вашего ключа. Индикатор мигает — коснитесь его. iOS поддерживает NFC и USB-C (YubiKey 5Ci и новее). Android — NFC + USB (OTG). Desktop использует нативные API FIDO2 (Windows Hello, macOS, Linux через libfido2).