# Импорт SSH-ключей в Bitwarden: решение неочевидной проблемы


Пароли — слабое звено безопасности. Люди используют одинаковые пароли на разных
сайтах, записывают их в заметках или выбирают простые комбинации вроде `qwerty123`.
Утечка одного сервиса ставит под удар все остальные аккаунты. Менеджеры паролей
решают эту проблему: генерируют уникальные сложные пароли для каждого сервиса и
хранят их в зашифрованном хранилище, доступном по единственному мастер-паролю.

## Какие менеджеры паролей существуют

Рынок менеджеров паролей сформировался и предлагает несколько зрелых решений:

- **[1Password](https://1password.com/)** — проприетарный менеджер с отличным UX,
  поддержкой passkeys и SSH-ключей. Минус — нет бесплатного тарифа, а с марта 2026
  цены выросли на 33% (Individual: $47.88/год).
- **[LastPass](https://www.lastpass.com/)** — один из старейших облачных менеджеров.
  После [крупной утечки в 2022 году](https://en.wikipedia.org/wiki/LastPass_2022_data_breach),
  когда были украдены зашифрованные хранилища пользователей, доверие к сервису
  серьёзно пострадало. К декабрю 2025 через взломанные данные
  [украдено более $438M в криптовалюте](https://krebsonsecurity.com/2025/03/feds-link-150m-cyberheist-to-2022-lastpass-hacks/).
- **[Dashlane](https://www.dashlane.com/)** — менеджер паролей со встроенным VPN и
  мониторингом утечек. Самый дорогой среди конкурентов, бесплатный тариф упразднён
  с сентября 2025.
- **[KeePassXC](https://keepassxc.org/)** — бесплатный open-source менеджер
  с локальным хранением данных в файле `.kdbx`. Максимальный контроль, но нет
  нативной облачной синхронизации — нужен Syncthing, Dropbox или аналог.
- **[Bitwarden](https://bitwarden.com/)** — open-source менеджер с щедрым бесплатным
  тарифом и возможностью self-hosting. О нём поговорим подробнее.

## Bitwarden и Vaultwarden

Bitwarden выделяется среди конкурентов открытым исходным кодом и бесплатным тарифом
без ограничений на количество паролей и устройств. Premium стоит всего $10/год и
добавляет TOTP-аутентификатор, зашифрованные вложения и аварийный доступ.

Для тех, кто хочет полностью контролировать свои данные, Bitwarden предлагает
self-hosted вариант. Но официальный сервер написан на C#/.NET, требует MSSQL
и несколько контейнеров — потребляет 2-4 GB RAM.

[Vaultwarden](https://github.com/dani-garcia/vaultwarden) — альтернативная
реализация сервера Bitwarden, написанная на Rust. Один контейнер, SQLite по
умолчанию, ~50 MB RAM. Работает даже на Raspberry Pi. При этом полностью
совместим с официальными клиентами Bitwarden — desktop, mobile, browser extensions.

| Параметр | Bitwarden Official | Vaultwarden |
| --- | --- | --- |
| Язык | C# / .NET | Rust |
| БД | MSSQL | SQLite / PostgreSQL / MySQL |
| RAM | 2-4 GB | ~50 MB |
| Контейнеры | Несколько | Один |
| Premium-функции | Платные | Все бесплатно |

## SSH-агент в Bitwarden

В декабре 2024 (версия 2024.12.0) в Bitwarden появилась долгожданная функция —
встроенный SSH-агент. Это новый тип элемента хранилища "SSH Key", который
хранит приватный ключ, публичный ключ и fingerprint.

Desktop-клиент Bitwarden работает как drop-in замена стандартного `ssh-agent`:
при SSH-подключении к серверу появляется popup с запросом подтверждения
использования ключа. Работает с Git, `ssh`, форвардингом агента — со всем,
что использует стандартный SSH agent protocol.

Для включения SSH-агента: **Settings → SSH Agent → Enable SSH agent**.

SSH-ключи в хранилище получают все стандартные возможности vault — папки,
избранное, повторный запрос мастер-пароля, заметки.

Поддерживаемые типы ключей:

- Ed25519 (генерация и импорт)
- RSA (только импорт)
- Формат — только OpenSSH (`-----BEGIN OPENSSH PRIVATE KEY-----`)

## Проблема: как импортировать существующий ключ?

При создании нового SSH Key в Desktop-клиенте Bitwarden автоматически генерирует
свежую пару ключей. Это удобно, если начинаешь с нуля, но что делать с
существующими ключами, которые уже прописаны на десятках серверов?

Документация Bitwarden описывает кнопку "Import key from clipboard" — иконку
рядом с полем Private key. Нужно скопировать приватный ключ в буфер обмена
и нажать эту иконку. Но при создании нового элемента **иконка не появляется**.

Это известный баг, зарегистрированный в нескольких issues на GitHub:
[#14142](https://github.com/bitwarden/clients/issues/14142),
[#18833](https://github.com/bitwarden/clients/issues/18833). Проблема
воспроизводится на macOS, Linux и Windows. На момент написания статьи issues
остаются открытыми.

## Решение

Workaround прост — кнопка импорта не появляется при **создании**, но работает
при **редактировании** существующего элемента:

1. Скопировать приватный ключ в буфер обмена:

   ```bash
   pbcopy < ~/.ssh/id_ed25519     # macOS
   xclip -sel clip < ~/.ssh/id_ed25519  # Linux
   ```

2. В Bitwarden Desktop создать новый элемент типа **SSH key** — он сгенерирует
   ключ автоматически. Задать имя и нажать **Save**.

3. Открыть только что созданный элемент на **редактирование** — рядом с полем
   Private key появится иконка "Import key from clipboard".

4. Нажать иконку — приватный ключ заменится на ваш из буфера обмена, public key
   и fingerprint обновятся автоматически.

5. Сохранить.

Если ключ защищён passphrase и импорт не срабатывает (ещё один
[известный баг](https://github.com/dani-garcia/vaultwarden/discussions/5331)) —
снять passphrase на временной копии:

```bash
cp ~/.ssh/id_ed25519 /tmp/id_ed25519_nopass
ssh-keygen -p -f /tmp/id_ed25519_nopass
# Ввести старый passphrase, новый оставить пустым
pbcopy < /tmp/id_ed25519_nopass
rm /tmp/id_ed25519_nopass
```

После импорта ключ защищён шифрованием хранилища Bitwarden — отдельный passphrase
на нём уже не нужен.

## Резюме

Менеджер паролей — необходимый инструмент. Bitwarden в связке с Vaultwarden даёт
open-source решение с полным контролем над данными и минимальными требованиями
к ресурсам.

SSH-агент в Bitwarden — отличная функция, которая убирает необходимость держать
приватные ключи в `~/.ssh/` на каждой машине. Но импорт существующих ключей
спотыкается о баг: кнопка импорта из буфера обмена не появляется при создании
нового элемента. Решение — создать элемент, сохранить, открыть на редактирование
и импортировать ключ через иконку clipboard.

Неочевидно, но работает.

