
Un agente SSH che fornisce chiavi SSH memorizzate in Bitwarden Secrets Manager
Un agente SSH che fornisce chiavi SSH salvate come segreti in Bitwarden Secret Manager.
Supporta l'autenticazione SSH e la firma dei commit Git.

Implementa il protocollo SSH Agent come server su socket di dominio Unix, fungendo da ponte sicuro tra i tuoi client SSH e Bitwarden Secrets Manager.
Le sue caratteristiche includono:
/tmp/vc-$(whoami)-ssh-agent.sockssh-agent-lib senza mai esporre le chiavi private su disco0600 (solo proprietario), le chiavi vivono solo nella memoria del processo e le API di Bitwarden vengono chiamate usando un machine token con scope limitato che puoi configurare con accesso granulare ai segreti.Sotto il cofano, è costruito con Tokio per I/O asincrono, usa la crate ssh-key per le operazioni crittografiche e supporta sia chiavi Ed25519 che RSA in formato OpenSSH.
È nato da una mia necessità. La funzionalità Bitwarden SSH Agent nel client GUI di Bitwarden è comoda, ma cosa usare se hai solo una devbox CLI? Come portare in modo sicuro la tua chiave SSH in una pipeline CI/CD per firmare i commit git? E se devi aprire una connessione SSH da un container o una VM effimeri senza copiare alcuna chiave privata? Come evitare di avere a che fare con passphrase salvate nel portachiavi e legate alle sessioni di login?
Così ho scritto un piccolo strumento CLI per recuperare le chiavi SSH e renderle disponibili senza esporre la loro controparte privata.
E per evitare di portare l'intero vault Bitwarden nell'ambiente, usa Bitwarden Secrets Manager così puoi scegliere quale macchina può accedere a quale segreto e impostare permessi granulari per i token.
-----BEGIN OPENSSH PRIVATE KEY----- e -----END OPENSSH PRIVATE KEY-----.Usa uno dei metodi seguenti.
Usando poof:
poof install pirafrank/vault-conductor
curl -fsSL https://raw.githubusercontent.com/pirafrank/vault-conductor/main/install.sh | sh
brew tap pirafrank/tap
brew install vault-conductor
oppure scarica manualmente l'ultima versione stabile e mettila nel $PATH.
cargo install --locked --git https://github.com/pirafrank/poof --tag VERSION
Devi fornire:
BWS_ACCESS_TOKEN, il machine token che hai configurato sopra. La variabile d'ambiente ha lo stesso nome dello strumento CLI bws di BitwardenBW_SECRET_IDS, elenco separato da virgole di UUID dei segreti in cui è salvata ciascuna chiave privata. Puoi leggere l'UUID di ogni segreto nell'app web BWS (controlla sotto il nome del segreto).BW_SERVER_ENDPOINT (Opzionale), endpoint del server Bitwarden personalizzato (solo host, senza protocollo). Se non fornito, il valore predefinito è bitwarden.com. Esempi validi sono bitwarden.eu (cloud) e myvault.example.com, 192.168.1.100, vault.internal (self-hosted).Puoi passarle come variabili d'ambiente sopra indicate (ottimo per setup CI e DevOps) oppure tramite file di configurazione:
# download the example config file at the default path, then customize to your needs
mkdir ~/.config/vault-conductor
curl -sSL https://github.com/pirafrank/vault-conductor/raw/refs/heads/main/config.yaml.example > ~/.config/vault-conductor/config.yaml
chmod 0600 ~/.config/vault-conductor/config.yaml
# set SSH Agent env var to vault-conductor socket
export SSH_AUTH_SOCK="/tmp/vc-$(whoami)-ssh-agent.sock"
# Start in foreground
# (recommended for first time users to verify config is ok)
vault-conductor start --fg
# Start the agent in background
vault-conductor start
# Stop the background agent
vault-conductor stop
Il comando start supporta anche l'opzione --config per fornire un percorso di configurazione personalizzato. Le variabili d'ambiente hanno sempre la precedenza sul file di configurazione.
A volte potresti aver bisogno di fare debug di una situazione strana e ti serve la massima quantità di log possibile. Esegui quanto segue per avviare in primo piano e ottenere log verbose su stdout:
vault-conductor start --fg -vv
Puoi installarlo come servizio Systemd nello spazio utente. Leggi di più qui.
Controlla la directory docs per trovare diagrammi su come funziona ed è organizzato il codice. Consulta la politica di sicurezza prima di usare chiavi RSA o fare forwarding dell'agente.
vault, /voːlt/ - una stanza sotterranea, soprattutto per conservare oggetti di valore
conductor, /kənˈdʌk·tər/ - un direttore, una cosa che conduce calore o elettricità
per estensione, qualcosa che conduce la tua preziosa chiave SSH da un vault Bitwarden al tuo ambiente di sviluppo.
Questo progetto è concesso in licenza sotto la MIT License.
Vedi il file LICENSE per i dettagli.