cheat-sheets

Bitwarden Cheat-Sheet

Bitwarden is an open source password manager. This sheet covers the CLI (bw) and self-hosting with Vaultwarden.

Documentation: Bitwarden CLI

See also: Passbolt (team-oriented self-hosted alternative) · Security

Install the CLI #

COMMANDDESCRIPTION
npm install -g @bitwarden/cliInstall with npm
sudo snap install bwInstall with snap
brew install bitwarden-cliInstall on macOS
choco install bitwarden-cliInstall on Windows, see Chocolatey

Login and Unlock #

COMMANDDESCRIPTION
bw config server https://vault.example.comPoint at a self-hosted server
bw loginLog in with email and master password
bw login --apikeyLog in with the API key (BW_CLIENTID, BW_CLIENTSECRET)
bw unlockUnlock and print a session key
export BW_SESSION="<KEY>"Use the session key in later commands
bw unlock --rawPrint only the key, for scripting: export BW_SESSION=$(bw unlock --raw)
bw lockLock the vault
bw logoutLog out
bw statusShow login and lock state
bw syncPull the latest vault

Reading Items #

COMMANDDESCRIPTION
bw list items --search <TERM>Search items (JSON)
bw list foldersList folders
bw get item <NAME-OR-ID>Full item JSON
bw get password <NAME-OR-ID>Print only the password
bw get username <NAME-OR-ID>Print only the username
bw get totp <NAME-OR-ID>Current 2FA code
bw get notes <NAME-OR-ID>Print secure notes
bw get uri <NAME-OR-ID>Print the first URI
bw generate -ulns --length 24Generate a password (upper, lower, number, special)
bw generate --passphrase --words 5Generate a passphrase

Writing Items #

bash
bw get template item | jq '.name="Example" | .login.username="me" | .login.password="secret"' \
  | bw encode | bw create item
COMMANDDESCRIPTION
bw edit item <ID> <BASE64-JSON>Edit an item
bw delete item <ID>Move to trash
bw delete item <ID> --permanentDelete permanently
bw export --format json --output vault.jsonExport (unencrypted, handle with care)
bw import bitwardenjson vault.jsonImport

Secrets in Scripts #

bash
export BW_SESSION=$(bw unlock --passwordenv BW_PASSWORD --raw)
DB_PASS=$(bw get password "prod-db")

Never commit BW_SESSION, BW_PASSWORD or exports. For automation consider Bitwarden Secrets Manager (bws).

Self-Hosting with Vaultwarden #

yaml
services:
  vaultwarden:
    image: vaultwarden/server:latest
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.com"
      SIGNUPS_ALLOWED: "false"
    volumes:
      - ./vw-data:/data
    ports:
      - "127.0.0.1:8080:80"

Put it behind a TLS reverse proxy (Nginx or Traefik). Back up ./vw-data.

Search all sheets

Tip: / or Ctrl/Cmd+K to open, Esc to close.