// DevOps

Bitwarden CLI: управление паролями из терминала и автоматизация CI/CD

Опубликовано 22.09.2026

Bitwarden CLI — официальная утилита командной строки bw для работы с хранилищем Bitwarden: найти пароль в терминале, получить секрет в скрипте, передать его в пайплайн CI/CD. Код открыт, утилита бесплатна и работает как с облаком Bitwarden, так и с собственным сервером, в том числе с Vaultwarden.

Ниже — установка, вход, основные команды и готовый шаблон для CI. Если собственного сервера ещё нет, начните со статьи Vaultwarden за 30 минут; о выборе менеджера паролей для компании — в цикле «Менеджеры паролей».

1. Установка

По документации Bitwarden доступны несколько способов:

bash
# 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.

Проверка:

bash
bw --version

2. Подключение к своему серверу

По умолчанию CLI работает с облаком Bitwarden. Для собственного сервера — Vaultwarden или self-hosted Bitwarden — адрес указывают до входа:

bash
bw config server https://vault.example.ru

Для европейского облака Bitwarden адрес https://vault.bitwarden.eu. Если сервисы сервера разнесены по разным адресам, у команды есть отдельные параметры: --web-vault, --api, --identity и другие.

Vaultwarden реализует клиентский API Bitwarden, включая личный API-ключ, поэтому всё описанное ниже с ним работает.

3. Вход

Интерактивный вход

bash
bw login

Утилита спросит адрес почты, мастер-пароль и, если включена, двухфакторную аутентификацию. Для организаций с единым входом есть bw login --sso.

Вход по API-ключу

Для скриптов и CI интерактивный вход не подходит. Личный API-ключ берут в веб-интерфейсе: Настройки → Безопасность → Ключи. Он состоит из client_id вида user.xxxx и client_secret.

bash
export BW_CLIENTID="user.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
export BW_CLIENTSECRET="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

bw login --apikey

Важно: API-ключ не заменяет мастер-пароль. Он только авторизует на сервере, а для расшифровки хранилища всё равно нужен bw unlock. Если ключ скомпрометирован, его можно перевыпустить — при этом старый ключ и все сессии, открытые с ним, перестают действовать.

4. Разблокировка и BW_SESSION

После входа данные хранилища ещё зашифрованы. Их расшифровывает команда:

bash
bw unlock

Она выводит ключ сессии в виде команды export BW_SESSION="...". Пока переменная BW_SESSION задана, bw расшифровывает данные без повторного запроса мастер-пароля. Ключ можно передать и в отдельную команду флагом --session.

В скриптах мастер-пароль берут из переменной окружения или файла, а ключ сессии получают одной строкой:

bash
# пароль в переменной окружения
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 и не переносится в новое окно терминала.

Проверить текущее состояние — вошли ли вы и разблокировано ли хранилище:

bash
bw status

5. Основные команды

ЗадачаКоманда
Загрузить свежие данные с сервераbw sync
Поиск элементовbw list items --search "github"
Элементы папки, коллекции, организацииbw list items --folderid <ID> (--collectionid, --organizationid)
Парольbw get password "github"
Логинbw get username "github"
Код TOTPbw 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:
bash
bw list items --search "github" | jq -r '.[] | "\(.id)  \(.name)"'

Скопировать пароль в буфер обмена в Linux:

bash
bw get password github | xclip -selection clipboard

6. Шаблон скрипта для CI/CD

Отдельную учётную запись для CI лучше завести с доступом только к нужным элементам, например к одной коллекции организации. BW_CLIENTID, BW_CLIENTSECRET и BW_PASSWORD хранятся в защищённых переменных CI, а не в репозитории.

bash
#!/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 и своими тарифами. В нём секреты группируются в проекты, а доступ выдаётся машинным учётным записям по токену доступа, без мастер-пароля:

bash
export BWS_ACCESS_TOKEN="..."
bws secret list
bws secret get <SECRET_ID>
bws run -- ./deploy.sh   # запуск команды с секретами в переменных окружения

В списке возможностей Vaultwarden Secrets Manager не значится, поэтому для собственного сервера на Vaultwarden остаётся bw по схеме выше.

Правила безопасности

  1. Не храните BW_SESSION на диске и не выводите его в журналы — только в памяти процесса.
  2. Завершайте сессию командой bw lock или bw logout в конце скрипта.
  3. Маскируйте секреты в CI и не передавайте их аргументами командной строки: аргументы видны в списке процессов.
  4. Разделяйте доступ. У учётной записи для CI должен быть доступ только к тем секретам, которые нужны пайплайну.

Как не допустить утечки ключей из репозитория и что делать, если утечка уже случилась, — в статье цикла «Безопасная разработка» «Секреты в коде».

// Reviews

Отзывы по теме

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

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

kfhzasorin

Настройка vps, настройка сервера

12.05.2026 · ★ 5/5

Отличная работа! Очень быстро настроил сервер, установил панель, прописал IP. Однозначно могу порекомендовать!

Отличная работа ! Очень быстро настроил сервер, установил панель прописал IP Однозначно могу по рекомендовать !

fedinseo

Настройка vps, настройка сервера

19.04.2026 · ★ 5/5

Покупатель профи-эксперт

Было несколько проблем касаясь как технической части так и понимания в целом. Михаил быстро ответил на запрос, помог разобраться и решил проблеммы технические и помог разобраться в понимании, за что отдельное спасибо. Результатом доволен.

Было несколько проблем касаясь как технической части так и понимания в целом. Михаил быстро ответил на запрос, помог разобраться и решил проблеммы технические и помог разобраться в понимании, за что отдельное спасибо. …

abazawolf

Настройка vps, настройка сервера

18.02.2026 · ★ 5/5

// Contact

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Написать в Telegram

Отвечаю в течение рабочего дня (03:00–13:00 GMT)

Или оставьте заявку здесь:

Подтвердите, что вы не бот.

Написать и получить быстрый ответ