WSLで1Password SSHエージェントを使う
1Passwordマニュアル|WSLでのSSHエージェント設定方法を解説。Gitコマンド認証も簡単に行える手順を詳しく紹介します。
WSLで1Password SSHエージェントを使う
1Password Windows Subsystem for Linux(WSL)統合により、Windowsホストで実行されている1Password SSHエージェントを使って、SSHとGitコマンドを認証し、WSL内でGitコミットに署名できるようになります。
1Password統合はWSL 1とWSL 2の両方をサポートします。
必要条件
1Passwordにサインアップしてください。
1Password for Windowsをインストールしてサインインしてください。
Windowsホストに1Password SSHエージェントを設定し、実行されていることを確認します。
統合の仕組み
WSLを使うと、コマンドラインからWindows OpenSSHクライアント(ssh.exe)などのWindowsツールを実行できます。1Password WSL統合は、相互運用性を活用します。WSLに組み込まれており、SSHリクエストをWindows上の1Password SSHエージェントに転送します。
標準のOpenSSHエージェント転送のように SSHエージェントリクエストを転送する代わりに、WSLからWindowsで実行されているssh.exeプロセスにSSHリクエスト全体を効果的に転送できます。その後、ssh.exeプロセスはWindowsホスト上の1Password SSHエージェントを使ってリクエストを認証します。
これは、SSH設定への変更は、Windowsの%USERPROFILE%/.ssh/configファイルで行う必要がある(WSLインスタンス上のファイルではなく)ことも意味します。
SSHリクエストを転送させる
1.次のコマンドを使って、Windowsホスト上で1Password SSHエージェントが実行されているかどうかを確認します。
PS C:\> ssh-add.exe -l
結果の例:
256 SHA256:2zmxMpLy5MeIx18pBUkumptKkKinlghygOvV6URe8QI Git Authentication Key (ED25519)
エージェントが実行中の場合、1つ以上のSSH鍵のリストが返されます。これらは、1PasswordにSaveしたSSH鍵であり、エージェントでSSHリクエストに使用できます。
2.WSLインスタンスで次のコマンドを実行してWSLがSSHリクエストを正常に転送しているかどうかを確認します。
$ ssh-add.exe -l
結果の例:
256 SHA256:2zmxMpLy5MeIx18pBUkumptKkKinlghygOvV6URe8QI Git Authentication Key (ED25519)
Windowsホストでコマンドを実行したときと同じSSH鍵のリストが返されるはずです。その場合、WSLはSSHリクエストをWindowsホストに転送しています。 ssh-add.exe -lコマンドの実行時にSSH鍵がリストされない場合は、ヘルプを参照してください。
3.WSLにSSH鍵がリストされている場合は、コマンド内のsshをssh.exeに置き換えてSSHリクエストを実行してみてください。
例: $ ssh.exe -T [email protected]
SSHリクエストを承認するため、1Passwordからのプロンプトが表示されます。

1Password SSHエージェントを使って、WindowsホストとWSLインスタンス間でSSHリクエストを転送できるようになりました。
ssh.exeを使うようにGitを設定する
1Password SSHエージェントを使ってWSLでGitコマンドを認証するにはcore.sshCommandとしてssh.exeを使うようにGitを設定できます。
この変数をグローバルに設定するには、WSLで次のコマンドを実行します。
$ git config --global core.sshCommand ssh.exe
SSHでGitコミットに署名する
⚠情報
1Password WSL統合によるSSH Gitコミット署名には、Git 2.34.0以降と64ビット版の Windows 10以降が必要です。Arm搭載のWindowsデバイスはサポートされていません。
Gitがssh.exeを使うように設定されている場合、統合を使ってWSLからGitコミットに署名することもできます。
WSLでSSHを使ってGitコミット署名をグローバルに設定するには:
Windowsホストで1Passwordアプリを開き、使う SSH鍵を開きます。
⁝をクリックし[ Configure Commit Signing]を選びます。
次のウィンドウで、[Configure for Windows Subsystem for Linux (WSL)]チェックボックスをオンにし、[Copy Snippet]をクリックします。
WSLインスタンスで、スニペットを~/.gitconfigファイルに貼り付けます。

単一のリポジトリーでSSH署名を設定することもできます。
1PasswordはGit設定ファイルに次の変更を加えます。
gpg.formatをsshに設定します。
user.signingkeyを、コミットに署名するために選択した公開鍵に設定します。
commit.gpgsignをtrueに設定すると、各コミットに-Sフラグを含める必要がなくなります。 (オプション)
gpg.ssh.program1Passwordが提供するSSH署名バイナリーに設定します。
WSLでGitコミット署名を設定したら、Windowsホストと同じ手順を使って設定をテストできます。公開鍵を登録し、コードをコミットして、コミットが署名されていることを確認します。
オプション:SSHコマンドのためのエイリアスを追加する
Windowsホストで1Password SSHエージェントを使ってGit以外のSSHリクエストを認証する予定の場合は、オプションでssh.exeとssh-add.exeの代わりにコマンドラインでsshとssh-addを使用するエイリアスをBashプロファイルにCreateできます。
これは必須ではありませんが、全てのプラットフォームで同じSSHコマンドを使うと便利です。~/.bashrcまたは~/.bash_aliasesファイルに、次のエイリアスを追加します。
$ alias ssh='ssh.exe' $ alias ssh-add='ssh-add.exe'
認証モデル
1Password SSHエージェントは、他のプラットフォームと同様に、WSL統合で同じ認証モデルを使います。WSLセッションのSSH鍵リクエストを承認すると、現在のセッションのみがその鍵の使用を許可されます。新しいWSLセッションまたはタブを開くと、SSHリクエストを再度承認するように求められます。
1Password SSHエージェント認証モデルの詳細をご覧ください。
トラブルシューティング
WSLでssh-add.exe -lコマンドを実行したときにcommand not foundエラーが表示される場合は、OpenSSHがPATHにない可能性があります。完全な実行可能パスを使って、コマンドを再度実行してみてください。
$ /mnt/c/Windows/System32/OpenSSH/ssh-add.exe -l
それでもエラーが表示される場合は、相互運用性設定([interop])がWSL設定ファイルでオンになっていることを確認してください。オンになっている場合、エントリーは次のようになります。
[interop] enabled = true
代わりにenabled = falseが表示される場合は、enabled値をtrueに設定します。