BitwardenはデスクトップアプリケーションにSSHエージェントを統合し、ユーザーが暗号化されたヴォルト内でSecure Shell(SSH)鍵を直接保存および管理できるようにしました。この変更により、開発者やシステム管理者は、秘密鍵をローカルファイルに保存する代わりに、サーバー、Gitコミット、およびその他のSSHベースのサービスの認証を処理する一元的なパスワードマネージャーを通じて管理できるようになります。

SSHストレージ設定を表示するBitwardenデスクトップクライアントのインターフェース
Bitwardenデスクトップクライアントは、SSH鍵の保存を有効にし、管理するための設定を提供します。bitwarden.com

この画像は、Bitwardenデスクトップアプリケーション内でSSHストレージを有効にする最初のステップを示しています。

ヴォルトの状態と承認ロジック

Bitwarden SSHエージェントの動作は、ユーザーのヴォルトの状態によって直接制御されます。ヴォルトがログアウトされているか、ロックされている(最初のロック解除前)場合、エージェントはリクエストをリスト表示したり署名したりしません。

ヴォルトがロック解除されると、エージェントがアクティブになります。ユーザーは、アプリがリクエストを自動的に承認するか、手動での承認を必要とするかを選択できます。承認が有効な場合、BitwardenはユーザーにSSH鍵を使用するための各特定のリクエストを承認するよう促し、バックグラウンドプロセスやリモートサーバーが明示的な同意なしに鍵を使用できないようにします。

「SSHエージェント転送を使用すると、アクセスしているリモートサーバーが、あなたの秘密鍵をヴォルトの外に公開することなく、あなたの鍵を使用して他のサーバーに認証できるようになります。」

— Bitwarden SSH Agent | Bitwarden

システム構成と統合

Bitwardenを主要なSSHエージェントとして使用するには、ユーザーはオペレーティングシステムを構成して、SSHリクエストをBitwardenのソケットにルーティングする必要があります。Windowsでは、これにはネイティブのOpenSSH Authentication Agentサービスを無効にする必要があります。

OpenSSH Authentication Agentサービスを表示するWindowsサービスパネル
Windowsでは、Bitwardenを使用するためにネイティブのOpenSSH Authentication Agentサービスを無効にする必要があります。bitwarden.com

この画像は、ユーザーがネイティブエージェントを無効にする必要があるWindowsサービスパネルを示しています。

Git署名に必要なソフトウェアバージョン: Git 2.34 以降; OpenSSH 8.8 以降
Git署名に必要なソフトウェアバージョンbitwarden.com

HN Digestによる図表(bitwarden.comの報告数に基づく)。数値はソースの記載通り。

macOSおよびLinuxでは、ユーザーはSSH_AUTH_SOCK環境変数を、Bitwardenデスクトップアプリによって作成された特定のソケットを指すように設定する必要があります。例えば、macOSユーザーは、ターミナルセッション間で変数が保持されるように、.zshrcまたは.bashrcファイルにコマンドを追加する場合があります。

構成が完了すると、ssh-add -Lやgitなどの標準的なツールが認証のためにBitwardenと通信できるようになり、異なる開発環境間でシームレスなワークフローが可能になります。

SSHエージェント転送とセキュリティのトレードオフ

この統合はSSHエージェント転送をサポートしており、これによりリモートサーバーがユーザーのローカル鍵を使用して第2のサーバーに認証できるようになります。鍵はBitwardenヴォルト内に留まるため、秘密鍵が中間サーバーに実際に公開されることはありません。サーバーは単にローカルのBitwardenインスタンスに認証を実行するよう要求するだけです。

これにより、マシン間で手動で鍵を移動させる必要がなくなるため利便性は向上しますが、使いやすさとセキュリティの間のトレードオフが生じます。ユーザーは「承認を求める」機能を使用することで、エージェント転送のリスクを軽減できます。この機能により、リモートサーバーからのローカル鍵の使用要求は、ユーザーによって手動で承認される必要があります。

SSHエージェント転送のためのBitwarden承認プロンプト
リモートサーバーがローカル鍵の使用を要求した際、ユーザーは手動の承認プロンプトを受け取ることができます。bitwarden.com

このスクリーンショットは、エージェント転送に関連するリスクを軽減するために使用される「承認を求める」機能を示しています。

Hacker Newsの読者の反応

  • 懐疑的: 数人のコメント投稿者が、この報告の深刻度について懐疑的な意見を表明しており、関連するプルリクエストはマージされずにクローズされたことや、この機能がオプトイン(任意選択)として説明されていることを指摘しました。 コメント ↗
  • 代替案: あるコメント投稿者は、macOSのセキュアエンクレーブを使用してSSH鍵を管理することを提案しました。これには、ユーザーがすべての接続を認識できるように、新しいセッションごとに指紋認証が必要になります。 コメント ↗
  • 代替案: 他のユーザーは、すべての認証操作を確認するために物理的なタッチを必要とするように構成されたYubikeyなどのハードウェアセキュリティキーの使用を推奨しました。 コメント ↗
  • 懐疑的: あるコメント投稿者は、この問題はSSHエージェントの動作における根本的な設計上の欠陥であると主張し、これらのツールはジャンプホストのような安全なインフラを促進することを目的としていると指摘しました。 コメント ↗

Hacker Newsのスレッドで出た意見の要約です。事実として検証されたものではありません。 議論の全文を読む ↗