// DevOps
Bitwarden CLI: управление паролями из терминала и автоматизация CI/CD
Опубликовано 22.09.2026
Bitwarden CLI — официальная утилита командной строки bw для работы с хранилищем Bitwarden: найти пароль в терминале, получить секрет в скрипте, передать его в пайплайн CI/CD. Код открыт, утилита бесплатна и работает как с облаком Bitwarden, так и с собственным сервером, в том числе с Vaultwarden.
Ниже — установка, вход, основные команды и готовый шаблон для CI. Если собственного сервера ещё нет, начните со статьи Vaultwarden за 30 минут; о выборе менеджера паролей для компании — в цикле «Менеджеры паролей».
1. Установка
По документации Bitwarden доступны несколько способов:
# npm (любая ОС; Bitwarden называет этот способ самым простым для обновлений)
npm install -g @bitwarden/cli
# Snap (Linux)
sudo snap install bw
# Chocolatey (Windows)
choco install bitwarden-cli
# Homebrew (macOS и Linux)
brew install bitwarden-cliКроме того, на bitwarden.com выкладываются готовые исполняемые файлы для Windows, macOS и Linux (x64). Файл нужно положить в каталог из PATH, иначе команды придётся запускать из каталога с ним. При установке через npm в Linux может понадобиться пакет build-essential.
Проверка:
bw --version2. Подключение к своему серверу
По умолчанию CLI работает с облаком Bitwarden. Для собственного сервера — Vaultwarden или self-hosted Bitwarden — адрес указывают до входа:
bw config server https://vault.example.ruДля европейского облака Bitwarden адрес https://vault.bitwarden.eu. Если сервисы сервера разнесены по разным адресам, у команды есть отдельные параметры: --web-vault, --api, --identity и другие.
Vaultwarden реализует клиентский API Bitwarden, включая личный API-ключ, поэтому всё описанное ниже с ним работает.
3. Вход
Интерактивный вход
bw loginУтилита спросит адрес почты, мастер-пароль и, если включена, двухфакторную аутентификацию. Для организаций с единым входом есть bw login --sso.
Вход по API-ключу
Для скриптов и CI интерактивный вход не подходит. Личный API-ключ берут в веб-интерфейсе: Настройки → Безопасность → Ключи. Он состоит из client_id вида user.xxxx и client_secret.
export BW_CLIENTID="user.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
export BW_CLIENTSECRET="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
bw login --apikeyВажно: API-ключ не заменяет мастер-пароль. Он только авторизует на сервере, а для расшифровки хранилища всё равно нужен bw unlock. Если ключ скомпрометирован, его можно перевыпустить — при этом старый ключ и все сессии, открытые с ним, перестают действовать.
4. Разблокировка и BW_SESSION
После входа данные хранилища ещё зашифрованы. Их расшифровывает команда:
bw unlockОна выводит ключ сессии в виде команды export BW_SESSION="...". Пока переменная BW_SESSION задана, bw расшифровывает данные без повторного запроса мастер-пароля. Ключ можно передать и в отдельную команду флагом --session.
В скриптах мастер-пароль берут из переменной окружения или файла, а ключ сессии получают одной строкой:
# пароль в переменной окружения
export BW_SESSION=$(bw unlock --passwordenv BW_PASSWORD --raw)
# или в файле (читается первая строка)
export BW_SESSION=$(bw unlock --passwordfile /run/secrets/bw_master --raw)Файл с паролем должен быть доступен только пользователю, который выполняет bw unlock. Ключ сессии действует до bw lock или bw logout и не переносится в новое окно терминала.
Проверить текущее состояние — вошли ли вы и разблокировано ли хранилище:
bw status5. Основные команды
| Задача | Команда |
|---|---|
| Загрузить свежие данные с сервера | bw sync |
| Поиск элементов | bw list items --search "github" |
| Элементы папки, коллекции, организации | bw list items --folderid <ID> (--collectionid, --organizationid) |
| Пароль | bw get password "github" |
| Логин | bw get username "github" |
| Код TOTP | bw get totp "github" |
| Заметка | bw get notes <ID> |
| Элемент целиком (JSON) | bw get item <ID> |
| Вложение | bw get attachment <имя файла> --itemid <ID> --output ./ |
| Сгенерировать пароль | bw generate --length 24 -uln --special |
| Завершить сессию | bw lock или bw logout |
Несколько практических замечаний:
bw syncтолько скачивает данные с сервера. Изменения, сделанные через CLI, отправляются на сервер сразу. Если пароль поменяли в браузере, а скрипт видит старый — выполнитеbw sync.bw getпринимает ID или строку поиска. В интерактивной работе поиск удобен, но в скриптах надёжнее ID: строка может найти не тот элемент или сразу несколько.- Вывод — JSON, его удобно разбирать утилитой
jq:
bw list items --search "github" | jq -r '.[] | "\(.id) \(.name)"'Скопировать пароль в буфер обмена в Linux:
bw get password github | xclip -selection clipboard6. Шаблон скрипта для CI/CD
Отдельную учётную запись для CI лучше завести с доступом только к нужным элементам, например к одной коллекции организации. BW_CLIENTID, BW_CLIENTSECRET и BW_PASSWORD хранятся в защищённых переменных CI, а не в репозитории.
#!/usr/bin/env bash
set -euo pipefail
# 1. Адрес сервера (до входа)
bw config server https://vault.example.ru
# 2. Вход по API-ключу: BW_CLIENTID и BW_CLIENTSECRET — из переменных CI
bw login --apikey
# 3. Разблокировка: мастер-пароль — из переменной BW_PASSWORD
export BW_SESSION=$(bw unlock --passwordenv BW_PASSWORD --raw)
# 4. Секрет по ID элемента (ID заранее: bw list items --search "my-db")
DB_PASS=$(bw get item "8a562df1-443b-4892-baee-b123456789ab" | jq -r '.login.password')
# 5. Используем секрет, не выводя его в журнал
./deploy.sh
# 6. Завершаем сессию
bw logoutВ GitHub Actions значение, полученное в шаге, стоит сразу замаскировать командой echo "::add-mask::$DB_PASS" — тогда оно не появится в журнале сборки, даже если попадёт в вывод.
7. Bitwarden Secrets Manager и утилита bws
У Bitwarden есть отдельный продукт для секретов инфраструктуры — Secrets Manager со своей утилитой bws и своими тарифами. В нём секреты группируются в проекты, а доступ выдаётся машинным учётным записям по токену доступа, без мастер-пароля:
export BWS_ACCESS_TOKEN="..."
bws secret list
bws secret get <SECRET_ID>
bws run -- ./deploy.sh # запуск команды с секретами в переменных окруженияВ списке возможностей Vaultwarden Secrets Manager не значится, поэтому для собственного сервера на Vaultwarden остаётся bw по схеме выше.
Правила безопасности
- Не храните
BW_SESSIONна диске и не выводите его в журналы — только в памяти процесса. - Завершайте сессию командой
bw lockилиbw logoutв конце скрипта. - Маскируйте секреты в CI и не передавайте их аргументами командной строки: аргументы видны в списке процессов.
- Разделяйте доступ. У учётной записи для CI должен быть доступ только к тем секретам, которые нужны пайплайну.
Как не допустить утечки ключей из репозитория и что делать, если утечка уже случилась, — в статье цикла «Безопасная разработка» «Секреты в коде».
// Reviews
Отзывы по теме
Пришел с дорогим запросом по настройке VPS-сервера, но в процессе консультации Михаил предложил гораздо более простое и экономичное решение. В итоге сэкономил бюджет и время. Михаил — настоящий эксперт, который работает на результат клиента, а не на чек. Рекомендую!
Пришел с дорогим запросом по настройке VPS-сервера, но в процессе консультации Михаил предложил гораздо более простое и экономичное решение. В итоге сэкономил бюджет и время. Михаил — настоящий эксперт, который работает …
Настройка vps, настройка сервера
12.05.2026 · ★ 5/5
Отличная работа! Очень быстро настроил сервер, установил панель, прописал IP. Однозначно могу порекомендовать!
Отличная работа ! Очень быстро настроил сервер, установил панель прописал IP Однозначно могу по рекомендовать !
Всё отлично, помог оперативно и профессионально, спасибо, рекомендую сообществу
Всё отлично, помог оперативно и профессионально, спасибо, рекомендую сообществу
Настройка vps, настройка сервера
16.04.2026 · ★ 5/5
Было несколько проблем касаясь как технической части так и понимания в целом. Михаил быстро ответил на запрос, помог разобраться и решил проблеммы технические и помог разобраться в понимании, за что отдельное спасибо. Результатом доволен.
Было несколько проблем касаясь как технической части так и понимания в целом. Михаил быстро ответил на запрос, помог разобраться и решил проблеммы технические и помог разобраться в понимании, за что отдельное спасибо. …
Настройка vps, настройка сервера
18.02.2026 · ★ 5/5
Все было сделано быстро и четко. Рекомендую
Все было сделано быстро и четко. Рекомендую
Настройка vps, настройка сервера
17.01.2026 · ★ 5/5
Всё прошло хорошо, исполнитель быстро реагировал на вопросы и помог решить проблему. Спасибо!
Всё прошло хорошо, исполнитель быстро реагировал на вопросы и помог решить проблему. Спасибо!
Настройка vps, настройка сервера
16.12.2025 · ★ 5/5
// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related