BitwardenでSSH鍵を管理する(Vaultwarden)
やること
sshやgitのコミットなどで秘密鍵の管理に悩んでませんか?🤔
ついに、BitwardenでSSH鍵管理機能(ssh-agentの代わりとして動作)を使えるようになったので、使い方をまとめます。
(主にここではVaultwardenをセルフホストしている方向けの説明ですが、内容は通常のBitwardenと変わりません)
Bitwardenの公式サーバーでは既に対応し、1月より順次展開されているようです。
環境
クライアント側
- Windows 11
- Bitwarden デスクトップ版 2025.2.1 (2025.1.2以降なら対応)
サーバー側
- Oracle Linux 8
- Vaultwarden 1.33.2 (Docker運用)
サーバー側の設定(Vaultwarden使用時)
Vaultwardenを使っている場合、サーバー側の設定からクライアント側の機能を有効化させる必要があります。(25/3/21現在)
(ただ、こうした設定は将来的には不要になると考えられます)
フラグの有効化
環境変数に実験的機能フラグ(EXPERIMENTAL_CLIENT_FEATURE_FLAGS
)を追記します。
フラグとしてssh-key-vault-item
及びssh-agent
を有効化する必要があります。(カンマ,
で複数指定)
EXPERIMENTAL_CLIENT_FEATURE_FLAGS=ssh-key-vault-item,ssh-agent
参考
サーバーの再起動&反映の確認
環境変数を変更後、サーバーの再起動が必要です。
その後、管理画面を有効化している場合は、管理画面でログイン後、
Readonly Config->Customize the enabled feature flags on the clientsにssh-key-vault-item,ssh-agent
が含まれていればサーバー側の対応は完了です。
使い方
下準備
Windows (環境によっては必要なし)
Bitwardenは標準のssh-agent
を置き換えるため、OpenSSHが有効になっていると、認証がそちらにとられる場合があります。そのため、無効化する必要があります。
検索窓で サービス
と入力するか、[Windows]+[R]しservices.msc
と入力+Enterで、サービスを開きます。
サービス一覧の中からOpenSSH Authentication Agent
を無効化してください。
MacOS
所有していないので、方法は公式から。悪しからず。
以下のコマンドでBitwarden SSH Agentを有効化します。
export SSH_AUTH_SOCK=/Users/<user>/Library/Containers/com.bitwarden.desktop/Data/.bitwarden-ssh-agent.sock
export SSH_AUTH_SOCK=/Users/<user>/.bitwarden-ssh-agent.sock
#または
launchctl setenv "SSH_AUTH_SOCKET" "/Users/<user>/.bitwarden-ssh-agent.sock"
Linux
SSH エージェントの有効化
サーバー側で対応している場合、Bitwardenの設定画面に Enable SSH Agent(SSHエージェントを有効にする) という設定が現れます。
有効化することで、Bitwardenがssh-agent
、ssh-add
として動作するようになります。
SSH鍵の追加
項目の種類の中に新しくSSH鍵が追加されます。
この状態で項目を新規作成すると、自動的に新しいSSH鍵が作成されます。
通常のログイン情報と同じようにフォルダー管理やファイル添付などができます。必要に応じて、パスワードの再要求なども設定可能です。
既存のSSH鍵を取り込む
上記のように、SSH鍵を追加する画面に行ってください。
取り込みたい鍵の秘密鍵をコピーした上で、Import key from clipboard(クリップボードから鍵をインポート) を選択すると既存の鍵を取り込めます。
ssh-agentの確認
以下のコマンドで、Bitwardenで登録した鍵が表示されればOKです。
ssh-add -l
SSH鍵で公開鍵認証する
基本的に意識する必要はありません。Bitwardenがssh-agent
として置き換わる形で署名を行うためです。
ロック時は、ロックを解除するようにBitwardenが起動します。
ロック解除時は、Bitwardenに以下の承認画面が現れ、承諾すると自動的に認証されます。
使用例: sshコマンド
ssh your_name@192.168.10.123
使用例: sshターミナル
sshターミナルなどを使用している場合は、対応していれば認証方法としてsshエージェント
を指定することで、秘密鍵やパスフレーズを設定することなくリモートサーバーに接続できます。
その他
Githubの公開鍵なども管理できます。詳しい方法は公式サイトにあるのでご参考に。
また、1Passwordにも同様の機能があり、問題や不具合などは同様の対処法が参考になると思われます。
まとめ
Bitwardenに面倒な秘密鍵管理を任せて幸せになりましょう。
参考
Discussion