Как перенести пароли из KeePass в Bitwarden, LastPass и Vaultwarden: пошаговое руководство по миграции | AdminWiki

Как перенести пароли из KeePass в Bitwarden, LastPass и Vaultwarden: пошаговое руководство по миграции

15 сентября 2026 12 мин. чтения
Содержание статьи

Перенос базы из KeePass в Bitwarden, LastPass или Vaultwarden укладывается в 20-40 минут и состоит из трёх шагов: экспорт KDBX в промежуточный CSV или JSON, импорт файла в целевое хранилище, удаление промежуточного файла. Прямой импорт KDBX не поддерживает ни одно из трёх хранилищ, этот формат читают только клиенты KeePass и KeePassXC.

Главный риск операции: промежуточный файл. CSV из KeePass содержит логины, пароли, TOTP-секреты и заметки открытым текстом. Такой файл попадает в облачную синхронизацию, в ночной бэкап, в автоматический снимок ZFS на TrueNAS или в историю версий файловой системы, и лежит там месяцами.

Ниже разобраны форматы для KeePass 2.5x, Bitwarden 2026.x, LastPass 4.x и Vaultwarden 1.3x, три пошаговых сценария, слияние баз без дубликатов, очистка секретов и чек-лист валидации. Если вы ещё выбираете целевое хранилище, начните со сравнения классов решений: типы систем хранения паролей, архитектура и критерии выбора.

Что нужно знать перед миграцией: форматы, риски и подготовка

Цепочка всегда одна: источник в KDBX, промежуточный файл в CSV или JSON, импорт в целевое хранилище, проверка, удаление промежуточного файла. Обратной цепочки без промежуточного файла не существует, поэтому безопасность миграции определяется тем, как вы обращаетесь с экспортом.

Какие форматы поддерживает каждое хранилище

ХранилищеЭкспортИмпортKDBX напрямую
KeePass 2.5xKDBX 4, CSV, KeePass XML, HTMLKDBX, CSV, KeePass XMLДа, родной формат
Bitwarden 2026.xCSV, JSON, зашифрованный JSONBitwarden CSV, Bitwarden JSON, LastPass CSV, KeePass 2 XML, 1Password, ChromeНет
LastPass 4.xCSVLastPass CSV, LastPass JSON, Chrome, 1PasswordНет
Vaultwarden 1.3xCSV, JSON, зашифрованный JSONBitwarden CSV, Bitwarden JSON, LastPass CSVНет

KDBX 4 шифрует базу целиком (AES-256 или ChaCha20, ключ выводится из мастер-пароля через Argon2d). Ни Bitwarden, ни LastPass, ни Vaultwarden не разбирают этот контейнер, поэтому базу приходится распаковывать в открытый формат. KeePass XML сохраняет группы и типы полей лучше CSV, и Bitwarden умеет его читать напрямую. Vaultwarden работает через тот же API, что и Bitwarden, поэтому список импортёров совпадает: разницы в форматах между облачной и self-hosted версией нет.

Риски промежуточных файлов и почему нельзя пропускать очистку

Экспорт в CSV выгружает пароли, URL, заметки и TOTP-секреты строками. Конкретные каналы утечки, которые встречаются на практике:

  • экспорт в /tmp или в домашний каталог, откуда файл попадает в ежедневный бэкап;
  • папка Dropbox, OneDrive или Google Drive с автоматической синхронизацией на три устройства;
  • автоматические снимки ZFS в TrueNAS и теневые копии Windows (VSS), которые хранят файл после удаления;
  • файлы-хвосты редакторов: passwords.csv.swp у Vim, passwords.csv~ у nano и продвинутых редакторов;
  • корзина, из которой файл восстанавливается одной командой;
  • история команд, если пароль попал в аргумент скрипта обработки CSV.

Правило, которое снимает большую часть рисков: промежуточный файл живёт только на зашифрованном носителе и удаляется сразу после импорта. Второй слой защиты: не открывать CSV в Excel, он создает временные копии в системном каталоге и правит кодировку.

Пошаговый перенос из KeePass в Bitwarden

  1. Скопируйте файл базы (например, secrets.kdbx) на зашифрованный носитель и проверьте, что база открывается нужным мастер-паролем и key-файлом.
  2. В KeePass 2.5x откройте File, затем Export, и выберите CSV (или KeePass XML, если нужна иерархия групп).
  3. Проверьте заголовок файла и состав колонок: Group, Title, Username, Password, URL, Notes, TOTP.
  4. В веб-интерфейсе Bitwarden откройте Tools, затем Import data, выберите формат, загрузите файл и нажмите Import data.
  5. Сверьте количество записей, папки, вложения и TOTP-коды.
  6. Удалите промежуточный файл: shred -u -z -n 3 passwords.csv.

Экспорт из KeePass: CSV или JSON?

Штатного экспорта в JSON у KeePass 2.5x нет: JSON формируют сторонние скрипты и плагины, а Bitwarden принимает только собственный JSON-формат. Выбор сводится к двум вариантам. CSV универсален и подходит LastPass, Bitwarden и Vaultwarden, но теряет вложенные группы, историю паролей и часть пользовательских полей. KeePass XML сохраняет иерархию групп и типы полей, Bitwarden читает его импортёром KeePass 2 XML. KeePassXC 2.7 также умеет экспортировать CSV и XML, логика та же, отличается расположение пунктов меню.

Для простой базы берите CSV. Если в базе больше трёх уровней групп или активно используются дополнительные поля, берите KeePass XML и проверьте результат особенно внимательно.

Импорт в Bitwarden и проверка папок

Bitwarden создаёт папки из колонки folder формата Bitwarden CSV. Колонки KeePass так не называются, поэтому перед импортом либо приведите заголовки вручную, либо используйте импортёр KeePass 2 XML. Соответствие колонок для ручного переименования: Group становится folder, Title становится name, Username становится login_username, Password становится login_password, URL становится login_uri, Notes становится notes, TOTP становится login_totp и favorites не переносится.

Корректная строка Bitwarden CSV выглядит так: folder,title,username,password,url,notes. После импорта проверьте четыре вещи. Количество записей совпадает с источником. Папки созданы и записи лежат в них, а не в общем списке. TOTP-коды отображаются и генерируют те же шестизначные значения. Вложения отсутствуют, через CSV они не переносятся, их добавляют вручную или через прямой перенос файлов.

Пошаговый перенос из KeePass в LastPass

  1. Сделайте резервную копию KDBX и убедитесь, что она открывается.
  2. Экспортируйте базу в CSV: File, Export, CSV.
  3. Приведите заголовки CSV к формату LastPass и проверьте разделитель.
  4. Войдите в LastPass, откройте More options, затем Advanced, затем Import.
  5. Выберите LastPass CSV, загрузите файл и запустите импорт.
  6. Проверьте количество записей, папки и заметки, после чего удалите CSV.

Приведение CSV KeePass к формату LastPass

LastPass ожидает фиксированный набор заголовков. Соответствие колонок KeePass и LastPass:

KeePassLastPass
Groupgrouping
Titlename
Usernameusername
Passwordpassword
URLurl
Notesextra
служебный флагfav (0 или 1)

Разделитель зависит от локали системы. KeePass в русской локали нередко выгружает CSV с точкой с запятой, а LastPass читает только запятую. Откройте файл в текстовом редакторе и посмотрите первую строку. Замените все разделители на запятую, следите за полями, внутри которых уже есть запятые: такие поля должны быть в двойных кавычках.

Импорт в LastPass и проверка записей

LastPass требует точного совпадения имён колонок. Лишние колонки он игнорирует, а переименованные ломают импорт целиком или частично. Файл сохраняйте в UTF-8 без BOM. После импорта проверьте количество записей и содержимое поля extra: заметки из KeePass часто содержат переносы строк, и часть клиентов отображает их обрезанными. TOTP-секреты из CSV не переносятся, их придётся заводить заново. KDBX LastPass не читает ни в одной версии 4.x.

Пошаговый перенос из KeePass в Vaultwarden

  1. Сделайте резервную копию KDBX и проверьте её открытие.
  2. Экспортируйте базу в CSV или KeePass XML.
  3. В веб-интерфейсе Vaultwarden откройте Tools, затем Import data, выберите Bitwarden CSV или Bitwarden JSON.
  4. Загрузите файл и запустите импорт, при необходимости указав коллекцию организации.
  5. Проверьте записи, папки и коллекции.
  6. Удалите промежуточный файл с сервера и с рабочей машины.

Особенности импорта в self-hosted Vaultwarden

Vaultwarden повторяет API Bitwarden, поэтому форматы и порядок действий совпадают с облачным сценарием. Отличия практические. Файл уходит на ваш сервер, а не в облако вендора, и это главный аргумент в пользу self-hosted схемы. Импорт в организацию требует прав owner или admin и заранее созданной коллекции. Если Vaultwarden стоит за Nginx, проверьте лимит размера тела запроса (client_max_body_size): база с несколькими тысячами записей легко превышает дефолтные 1 МБ, и импорт падает с ошибкой 413. Соединение обязано идти по HTTPS, иначе CSV с паролями уходит по сети открытым текстом.

Для развёртывания Vaultwarden нужен сервер с Docker и доменом. Подойдёт недорогой VPS: Timeweb Cloud даёт облачные серверы, хранилище и Kubernetes, ресурсы меняются под рост числа пользователей. Не забывайте, что доступность хранилища паролей критична: без сервера команда теряет доступ к секретам, поэтому резервные копии базы Vaultwarden (файл db.sqlite3 и каталог с вложениями) снимайте ежедневно.

Проверка записей и папок после импорта в Vaultwarden

Проверьте количество записей, структуру папок, наличие коллекций и работу TOTP. Если папки не создались, вернитесь к колонке folder в CSV. Вложения через CSV не переносятся: их добавляют вручную или переносят вместе с базой на уровне сервера. Vaultwarden 1.3x читает Bitwarden JSON и сохраняет типы записей (логины, защищённые заметки, карты, идентификаторы), чего CSV не умеет, но такой JSON получают экспортом из другого экземпляра Bitwarden или Vaultwarden.

Слияние баз: как избежать дубликатов, конфликтов и потери записей

Перенос в пустое хранилище - редкий случай. Обычно база команды уже существует, и импорт добавляет записи поверх. Ни Bitwarden, ни LastPass, ни Vaultwarden не дедуплицируют данные при импорте: каждая строка CSV превращается в новую запись. Есть три стратегии слияния. Импорт в пустое хранилище с последующим ручным слиянием, самый безопасный путь. Импорт в рабочее хранилище с последующей чисткой дубликатов, самый быстрый и самый рискованный. Предварительное слияние KDBX в KeePassXC перед экспортом, лучший вариант при нескольких личных базах.

Логика проверки целостности после слияния совпадает с подходами из миграции данных с проверкой целостности: сверяйте количество записей до и после, фиксируйте расхождения и объясняйте каждое.

Дедупликация до импорта: KeePassXC merge

KeePassXC объединяет базы без потери записей: откройте основную базу, выберите Database, затем Merge from database, и укажите вторую базу. Клиент сопоставляет записи по UUID и по совпадению Title с UserName, а расхождения показывает в списке конфликтов. Автоматического удаления дубликатов при слиянии нет: KeePassXC подсвечивает проблемные записи, решение принимаете вы. После слияния экспортируйте итог в CSV и переносите в целевое хранилище.

Что делать с дубликатами после импорта

В Bitwarden и Vaultwarden нет кнопки дедупликации. Отчёты Reports показывают повторно используемые и скомпрометированные пароли, но дубликаты записей не ищут. Рабочий приём: выгрузите хранилище в CSV, отсортируйте строки по паре title и username, затем разберите группы с одинаковыми значениями. Автоматическое удаление по совпадению названия опасно: записи admin в группах Prod и Stage могут содержать разные пароли. Удаляйте только после ручного сравнения полей password и notes. В LastPass встроенной дедупликации тоже нет, разбор такой же.

Откат неудачного импорта

Кнопки отката ни в одном из трёх хранилищ нет. Перед импортом выгрузите текущее состояние целевого хранилища: в Bitwarden и Vaultwarden это зашифрованный JSON через Tools, Export vault, в LastPass это CSV через Advanced, Export. Дальше два пути. Точечный: удалить импортированные записи вручную или пакетно через выделение. Полный: очистить хранилище и импортировать резервную копию заново. При работе с Vaultwarden держите копию файла базы сервера: восстановление из снапшота занимает минуты, повторный импорт в неверном формате может испортить и структуру папок. Резервную копию KDBX не удаляйте до конца проверки.

Безопасная очистка промежуточных файлов и защита секретов

Обычное удаление файла убирает только запись в таблице файловой системы. Содержимое остаётся в свободных блоках и читается утилитами восстановления. Порядок действий: создать файл на зашифрованном носителе, импортировать данные, перезаписать файл, очистить корзину, проверить историю файлов и бэкапы.

Как безопасно удалить CSV на Linux, macOS и Windows

  • Linux: shred -u -z -n 3 /path/to/passwords.csv перезаписывает файл трижды и удаляет его после нулевого прохода.
  • macOS: srm -vz /path/to/passwords.csv, если пакет srm установлен, иначе rm -P для перезаписи перед удалением.
  • Windows: cipher /w:C:\Temp перезаписывает свободное пространство каталога, для выборочного удаления подойдёт Eraser или SDelete.

На SSD перезапись не гарантирует физическое стирание из-за выравнивания износа: контроллер может оставить старые блоки нетронутыми. Основным слоем защиты выбирайте шифрование диска (LUKS, BitLocker, FileVault), тогда удаление ключа делает остатки данных нечитаемыми.

Работа в tmpfs и зашифрованных контейнерах

Файл в /dev/shm живёт в оперативной памяти и исчезает при перезагрузке, на диск он не пишется. Шифрование экспорта добавляет второй барьер: команда gpg -c passwords.csv создаёт passwords.csv.gpg с симметричным ключом, а исходный файл удаляется сразу после этого. Для Windows используйте BitLocker-раздел или контейнер VeraCrypt. Учтите: tmpfs защищает от записи на диск, но не от дампа памяти и не от вредоносного процесса на той же машине. Резервные копии KDBX храните отдельно, схема выгрузки в объектное хранилище разобрана в материале про перенос архивов в S3-хранилища.

Чек-лист валидации переноса и восстановление доступа

  1. Количество записей в источнике и целевом хранилище совпадает, расхождения объяснены.
  2. Все папки, группы и коллекции перенесены, записи лежат внутри них.
  3. TOTP-секреты генерируют корректные коды.
  4. Вложения перенесены вручную или через серверный перенос.
  5. Критичные учётные записи проверены тестовым входом.
  6. Резервная копия KDBX сохранена на зашифрованном носителе.
  7. Промежуточные CSV и JSON удалены, корзина очищена.
  8. Мастер-пароль нового хранилища сохранён в аварийном месте.
  9. Двухфакторная аутентификация включена, резервные коды распечатаны.
  10. Старая база KeePass не удалена до полной проверки.

Методика сверки данных до и после перехода подробно описана в руководстве по миграции баз данных: план, риски и решения, те же принципы работают и для хранилищ секретов.

Проверка критичных учётных записей

Составьте список из 5-10 записей, потеря которых останавливает работу, и проверьте вход по каждой. Минимальный набор: root или sudo на продовых серверах, панели AWS, GCP и Azure, гипервизор (Proxmox, VMware), банковский кабинет, корпоративная почта, регистратор доменов и DNS, CI/CD (GitLab, Jenkins), админка Vaultwarden, резервные коды 2FA. Если вход не удался, возьмите пароль из старой базы KeePass и перенесите запись вручную. Рассказы о том, что «импорт прошёл успешно», проверкой не заменяются: тестовый вход даёт единственное надёжное подтверждение.

Восстановление доступа при потере пароля от хранилища

Bitwarden: мастер-пароль не восстанавливается, работают recovery code, настроенный заранее, и Emergency Access для доверенного контакта. LastPass: сброс через email возвращает доступ к аккаунту, но данные расшифровываются только мастер-паролем, которого у сервиса нет. Vaultwarden: администратор может сбросить пароль пользователя или отключить 2FA, но не расшифровать хранилище, ключ выводится из мастер-пароля на клиенте. Практика: храните мастер-пароль на бумаге в сейфе и отдельно в другой системе с иным мастер-паролем. Резервные коды 2FA держите вне телефона, подход к их выбору и переносу seed-ключей разобран в материале про автономные 2FA-аутентификаторы.

Типовые ошибки при миграции и как их избежать

  • Кодировка Windows-1251 вместо UTF-8: кириллица в названиях превращается в мусор. Сохраняйте файл в UTF-8, проверяйте первую строку.
  • BOM в начале файла: Bitwarden читает первую колонку с лишним символом и не находит folder. Пересохраните файл без BOM в Notepad++ или VS Code.
  • Точка с запятой вместо запятой в разделителе: импорт падает или создаёт одну гигантскую запись.
  • Лишние кавычки и неэкранированные запятые внутри заметок: строка CSV распадается на лишние колонки.
  • Импорт в рабочее хранилище без дедупликации: тысячи дубликатов вместо сотни записей.
  • Забытые TOTP-секреты: пользователи остаются без второго фактора.
  • Неудалённый CSV в облачной папке: экспорт секретов лежит в синхронизации неограниченно долго.
  • Вложения, о которых вспомнили после удаления KDBX: восстановить их из CSV невозможно.
  • Устаревший клиент KeePass: старые сборки выгружают CSV без колонки TOTP.

Проблемы с кодировкой и разделителями CSV

KeePass 2.5x выгружает CSV в UTF-8, но в зависимости от настроек может добавлять BOM и менять разделитель на точку с запятой. Проверка занимает минуту: откройте файл в текстовом редакторе, посмотрите первую строку и наличие невидимых символов перед первым заголовком. Excel для правки не подходит: он перекодирует файл по системной локали, добавит кавычки и разделители, а при сохранении в CSV потеряет часть полей. Для массовых правок используйте sed или Python в режиме текстовых строк, а сам файл держите в памяти или на шифрованном разделе.

Что делать, если TOTP-секреты не перенеслись

CSV из KeePass содержит колонку TOTP только при включённом экспорте этого поля, и не все импортёры её читают. Bitwarden принимает секрет в поле login_totp, LastPass переносит данные в extra без гарантии распознавания. Проверьте хранилище на записи с включённым вторым фактором: откройте каждую и убедитесь, что код обновляется. Если секрет потерян, войдите в сервис с резервным кодом и перегенерируйте TOTP заново. После миграции перенастройка второго фактора на десятке сервисов занимает час, поэтому проверку TOTP ставьте в план сразу, а не после удаления старой базы.

Поделиться:
Сохранить гайд? В закладки браузера