// DevOps

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

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

В предыдущей статье мы развернули собственный сервер Vaultwarden. Сегодня — как работать с ним из консоли и встроить в автоматизацию.

Bitwarden CLI (утилита bw) — официальный инструмент командной строки с открытым исходным кодом. Позволяет находить доступы прямо в терминале и безопасно пробрасывать секреты в скрипты и пайплайны (GitHub Actions, GitLab CI и др.). Полностью бесплатен и совместим с self-hosted Vaultwarden.


1. Установка

bash
# Через NPM (любая ОС)
npm install -g @bitwarden/cli

# macOS
brew install bitwarden-cli

# Linux (Ubuntu/Debian)
sudo snap install bw

Проверяем:

bash
bw --version

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

По умолчанию CLI смотрит на облако Bitwarden. Переключаем на Vaultwarden:

bash
bw config server https://vault.yourdomain.com

3. Аутентификация: два сценария

Сценарий А: Интерактивный вход (личный ПК)

bash
bw login

Сценарий Б: Неинтерактивный вход (CI/CD)

Генерируем API-ключи в веб-интерфейсе: Настройки аккаунта → Безопасность → Ключи API, затем:

bash
export BW_CLIENTID="user.xxxxx-xxxx-xxxx"
export BW_CLIENTSECRET="xxxxxxxxxxxxxx"

bw login --apikey

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

login только авторизует на сервере — данные ещё зашифрованы. Чтобы их расшифровать:

bash
bw unlock

Система вернёт токен сессии:

bash
export BW_SESSION="AI39...=="

Скопируйте и выполните эту строку. Пока установлена переменная $BW_SESSION, utillта расшифровывает пароли локально в памяти без запроса мастер-пароля при каждой команде.

В скриптах — одной строкой:

bash
export BW_SESSION=$(bw unlock --passwordenv BW_PASSWORD --raw)

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

ЗадачаКоманда
Поиск элементаbw list items --search "github"
Получить парольbw get password "github"
Получить логинbw get username "github"
TOTP-код (2FA)bw get totp "github"
Весь объектbw get item <ID>

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

bash
bw get password github | xclip -selection clipboard

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

bash
#!/usr/bin/env bash
set -e

# 1. Адрес сервера
bw config server https://vault.yourdomain.com

# 2. Логин по API-ключам (BW_CLIENTID и BW_CLIENTSECRET — в переменных окружения CI)
bw login --apikey

# 3. Разблокировка
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')

echo "Запуск деплоя..."
# ./deploy.sh --pass=$DB_PASS

# 5. Завершаем сессию
bw logout

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

  1. Не храните BW_SESSION на диске — только в памяти текущей сессии или процесса CI/CD.
  2. Всегда вызывайте bw logout в конце скриптов — очищает локальные зашифрованные кэши.
  3. Маскируйте вывод в CI/CD — используйте механизмы маскирования секретов (::add-mask:: в GitHub Actions), чтобы пароли не попали в публичные логи.

Итог

Bitwarden CLI превращает Vaultwarden в полноценное хранилище секретов для инфраструктуры. Хардкод-паролям в конфиге и Git-репозиториях — конец.

Если Vaultwarden ещё не развёрнут — начните с предыдущей статьи: Vaultwarden за 30 минут.

// 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)

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

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