Перейти к основному содержанию

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

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

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

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

  • 1Password — проприетарный менеджер с отличным UX, поддержкой passkeys и SSH-ключей. Минус — нет бесплатного тарифа, а с марта 2026 цены выросли на 33% (Individual: $47.88/год).
  • LastPass — один из старейших облачных менеджеров. После крупной утечки в 2022 году , когда были украдены зашифрованные хранилища пользователей, доверие к сервису серьёзно пострадало. К декабрю 2025 через взломанные данные украдено более $438M в криптовалюте .
  • Dashlane — менеджер паролей со встроенным VPN и мониторингом утечек. Самый дорогой среди конкурентов, бесплатный тариф упразднён с сентября 2025.
  • KeePassXC — бесплатный open-source менеджер с локальным хранением данных в файле .kdbx. Максимальный контроль, но нет нативной облачной синхронизации — нужен Syncthing, Dropbox или аналог.
  • Bitwarden — open-source менеджер с щедрым бесплатным тарифом и возможностью self-hosting. О нём поговорим подробнее.

Bitwarden и Vaultwarden

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

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

Vaultwarden — альтернативная реализация сервера Bitwarden, написанная на Rust. Один контейнер, SQLite по умолчанию, ~50 MB RAM. Работает даже на Raspberry Pi. При этом полностью совместим с официальными клиентами Bitwarden — desktop, mobile, browser extensions.

ПараметрBitwarden OfficialVaultwarden
ЯзыкC# / .NETRust
БДMSSQLSQLite / PostgreSQL / MySQL
RAM2-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 , #18833 . Проблема воспроизводится на macOS, Linux и Windows. На момент написания статьи issues остаются открытыми.

Решение

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

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

    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 и импорт не срабатывает (ещё один известный баг ) — снять passphrase на временной копии:

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.

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