
Um agente SSH que fornece chaves SSH armazenadas no Bitwarden Secrets Manager
Um agente SSH que fornece chaves SSH armazenadas no Bitwarden Secret Manager como segredos.
Suporta autenticação SSH e assinatura de commits Git.

Ele implementa o protocolo do agente SSH como um servidor de socket Unix, atuando como uma ponte segura entre seus clientes SSH e o Bitwarden Secrets Manager.
Ele oferece:
/tmp/vc-$(whoami)-ssh-agent.sockssh-agent-lib sem nunca expor chaves privadas ao disco0600 (apenas o proprietário), as chaves vivem apenas na memória do processo, e as APIs do Bitwarden são chamadas usando um token de máquina com escopo, que você pode configurar com acesso granular aos segredos.Internamente, ele é construído com Tokio para I/O assíncrono, usa o crate ssh-key para operações criptográficas e suporta chaves Ed25519 e RSA no formato OpenSSH.
A funcionalidade Bitwarden SSH Agent no cliente GUI do Bitwarden é prática, mas o que usar se você estiver usando apenas a CLI da sua máquina de desenvolvimento? Como trazer sua chave SSH com segurança para um pipeline de CI/CD para assinar commits git? E se você precisar abrir uma conexão SSH de um contêiner ou VM efêmero sem copiar nenhuma chave privada? Como evitar lidar com frases secretas (passphrases) armazenadas no keychain e vinculadas a sessões de login?
Isso nasceu de uma necessidade minha. Então escrevi uma pequena ferramenta CLI para recuperar chaves SSH e disponibilizá-las sem expor sua contraparte privada.
E para evitar levar todo o seu cofre Bitwarden para o ambiente, ela usa o Bitwarden Secrets Manager para que você possa escolher qual máquina pode acessar qual segredo e definir permissões granulares de token.
-----BEGIN OPENSSH PRIVATE KEY----- e -----END OPENSSH PRIVATE KEY-----.Use um dos métodos abaixo.
Usando o 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
Ou baixe manualmente o último lançamento estável e coloque-o no $PATH.
cargo install --locked --git https://github.com/pirafrank/poof --tag VERSION
Você precisa fornecer:
BWS_ACCESS_TOKEN, o token de máquina que você configurou acima. A variável de ambiente tem o mesmo nome da ferramenta CLI bws da BitwardenBW_SECRET_IDS, lista separada por vírgulas de UUIDs de segredos onde cada chave privada está armazenada. Você pode ler o UUID de cada segredo no aplicativo web do BWS (confira abaixo do nome do segredo).BW_SERVER_ENDPOINT (Opcional), endpoint personalizado do servidor Bitwarden (somente host, sem protocolo). Se não for fornecido, o padrão é bitwarden.com. Exemplos válidos são bitwarden.eu (nuvem) e myvault.example.com, 192.168.1.100, vault.internal (self-hosted).Você pode fornecê-los como as variáveis de ambiente acima (bom para configurações de CI e DevOps) ou via arquivo de configuração:
# 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
O comando start também suporta a opção --config para fornecer um caminho de configuração personalizado. As variáveis de ambiente sempre têm precedência sobre o arquivo de configuração.
Às vezes, você pode precisar depurar uma situação estranha e obter o máximo de logs possível. Execute o seguinte para rodar em primeiro plano e obter logs detalhados na saída padrão:
vault-conductor start --fg -vv
Você pode instalá-lo como um serviço Systemd no espaço do usuário. Leia mais aqui.
Consulte o diretório docs para encontrar diagramas sobre como o código funciona e está organizado. Consulte a política de segurança antes de usar chaves RSA ou encaminhar o agente.
vault, /voːlt/ - um cômodo subterrâneo, especialmente para guardar objetos de valor
conductor, /kənˈdʌk·tər/ - um diretor, algo que conduz calor ou eletricidade
por extensão, algo que conduz sua valiosa chave SSH de um cofre Bitwarden para o seu ambiente de desenvolvimento.
Este projeto está licenciado sob a Licença MIT.
Consulte o arquivo LICENSE para obter detalhes.