Carpe Diem

備忘録

Bitwardenでsshキーを管理する(2025年最新版)

背景

以前次のようにライブラリを利用して、Bitwarden上でsshキーを管理するやり方を紹介しました。

christina04.hatenablog.com

2025年1月からに公式もsshキーをサポートしていたので、公式のやり方を紹介します。

環境

  • macOS(M2) v15.7.2
  • Bitwardenデスクトップ v2025.11.2

注意点

  • サポートしているアルゴリズムはed25519のみ
    • rsaecdsaは対応していない
  • インポートはできるがサポートしているアルゴリズムは同上

手順

Bitwardenのデスクトップアプリで行います。

sshキーの作成

SSHキーというタイプができているので、そこをクリックします。
+ボタンを押し、SSHキーを選択します。

名前が空欄になっているので記入します。

sshエージェントの設定

デスクトップアプリが

  • AppStore版
  • 公式dmg版

でやり方が異なります。

前者はApp Sandbox の制約があるので、好きにソケットファイルを配置する場所を指定できないためです。

AppStore版

次のコマンドを<user>の部分を自分のユーザにして、.bashrcなどに記載&sourceしておきます。

export SSH_AUTH_SOCK=/Users/<user>/Library/Containers/com.bitwarden.desktop/Data/.bitwarden-ssh-agent.sock

公式dmg版

公式dmgでは制約がなく好きな場所に置けるので、次のようにHOMEに指定することができます。

 export SSH_AUTH_SOCK=/Users/<user>/.bitwarden-ssh-agent.sock

Bitwardenアプリで有効化

Bitwardenアプリの設定を開くと次のようなメニューがあるので、チェックボックスをONにします。

動作確認

ssh-add -L

前述の設定が完了していると、

$ ssh-add -L
256 SHA256:xxxxx bw_ed25519 (ED25519)

で登録を確認できます。

$ ssh-add -L
The agent has no identities.

となる場合は「sshエージェントの設定」「Bitwardenアプリで有効化」のどちらかができていないので再確認してください。

ssh

sshサーバをdockerで立ち上げて検証します。
デスクトップアプリから公開鍵をコピーして利用します。

$ PUBKEY="ssh-ed25519 xxx"
$ docker run -d --name sshd \
  -p 2222:2222 \
  -e PUBLIC_KEY="$PUBKEY" \
  linuxserver/openssh-server

sshします。

$ ssh -p 2222 'linuxserver.io'@localhost

デスクトップアプリで次の確認が入ります。

認可するとsshログインが完了します。

$ ssh -p 2222 'linuxserver.io'@localhost
Welcome to OpenSSH Server
b6b89b2baa94:~$

ユースケース

GitHubでのgit clone

https://github.com/settings/keys

でSSH公開鍵を登録します。

試しにプライベートリポジトリでsshによるgit cloneをします。

$ git clone git@github.com:jun06t/xxx.git
Cloning into 'xxx'...
The authenticity of host 'github.com (20.27.177.113)' can't be established.
ED25519 key fingerprint is SHA256:xxx.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
remote: Enumerating objects: 1145, done.
remote: Counting objects: 100% (126/126), done.
remote: Compressing objects: 100% (90/90), done.
remote: Total 1145 (delta 46), reused 103 (delta 24), pack-reused 1019 (from 1)
Receiving objects: 100% (1145/1145), 182.32 KiB | 544.00 KiB/s, done.
Resolving deltas: 100% (439/439), done.

途中で先ほどのようなBitwardenによる認可チェックが入り、許可するとcloneが完了します。

その他

既存の鍵をインポートしたい

既存の鍵をインポートしたい場合は、それをクリップボードにコピーした状態でSSHキーの次の部分を押すとインポートしてくれます。

ただし注意書きしたようにed25519しかサポートしていません。

sshで毎回認可ボタン押すのが面倒

都度認証させるのが面倒な場合は設定表示しないにしておきます。

ターミナル以外でも署名したい場合

例えば僕はForkというGit管理アプリを使っています。
しかし前述の設定だけだとForkはSSH_AUTH_SOCKETを把握していません。

この場合ターミナルから

$ open -a Fork

このように環境変数を引き渡す形で起動すると、その他のアプリ(Forkなど)でも使えるようになります。

ssh-agentが固まる

Bitwardenデスクトップアプリのロックや再起動が起きると、どうやらssh-agentがアクセスしていたソケットにアクセスできなくなり、ssh-agentを使うgitコマンドなどが固まります。

その際はBitwardenアプリを一度手動で再起動し、ターミナルの方もソケットを改めて参照するよう再起動すると直ります。

まとめ

公式がssh-agent対応してくれたので安心して使えるようになりました。

参考