WSLで1Password SSHエージェントを使う
1Passwordマニュアル|WSLでのSSHエージェント設定方法を解説。Gitコマンド認証も簡単に行える手順を詳しく紹介します。
1Passwordマニュアル|WSLでのSSHエージェント設定方法を解説。Gitコマンド認証も簡単に行える手順を詳しく紹介します。
1Password Windows Subsystem for Linux(WSL)統合により、Windowsホストで実行されている1Password SSHエージェントを使って、SSHとGitコマンドを認証し、WSL内でGitコミットに署名できるようになります。
1Password統合はWSL 1とWSL 2の両方をサポートします。
1Passwordにしてください。
をインストールしてサインインしてください。
してください。
Windowsホストに
してください。
WSLを使うと、。1Password WSL統合は、WSLに組み込まれており、SSHリクエストをWindows上の1Password SSHエージェントに転送します。
標準のOpenSSHエージェント転送のように SSHエージェントリクエストを転送する代わりに、WSLからWindowsで実行されているssh.exeプロセスにSSHリクエスト全体を効果的に転送できます。その後、ssh.exeプロセスはWindowsホスト上の1Password SSHエージェントを使ってリクエストを認証します。
Windowsの%USERPROFILE%/.ssh/configファイルで行う必要がある(WSLインスタンス上のファイルではなく)ことも意味します。
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)
3.WSLにSSH鍵がリストされている場合は、コマンド内のsshをssh.exeに置き換えてSSHリクエストを実行してみてください。
例: $ ssh.exe -T git@github.com
SSHリクエストを承認するため、1Passwordからのプロンプトが表示されます。
1Password SSHエージェントを使って、WindowsホストとWSLインスタンス間でSSHリクエストを転送できるようになりました。
この変数をグローバルに設定するには、WSLで次のコマンドを実行します。
$ git config --global core.sshCommand ssh.exe
⚠情報
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ファイルに貼り付けます。
1PasswordはGit設定ファイルに次の変更を加えます。
gpg.formatをsshに設定します。
user.signingkeyを、コミットに署名するために選択した公開鍵に設定します。
commit.gpgsignをtrueに設定すると、各コミットに-Sフラグを含める必要がなくなります。 (オプション)
gpg.ssh.program1Passwordが提供するSSH署名バイナリーに設定します。
これは必須ではありませんが、全てのプラットフォームで同じSSHコマンドを使うと便利です。~/.bashrcまたは~/.bash_aliasesファイルに、次のエイリアスを追加します。
$ alias ssh='ssh.exe' $ alias ssh-add='ssh-add.exe'
WSLでssh-add.exe -lコマンドを実行したときにcommand not foundエラーが表示される場合は、OpenSSHがPATHにない可能性があります。完全な実行可能パスを使って、コマンドを再度実行してみてください。
$ /mnt/c/Windows/System32/OpenSSH/ssh-add.exe -l
[interop] enabled = true
代わりにenabled = falseが表示される場合は、enabled値をtrueに設定します。
Windowsホストでコマンドを実行したときと同じSSH鍵のリストが返されるはずです。その場合、WSLはSSHリクエストをWindowsホストに転送しています。 ssh-add.exe -lコマンドの実行時にSSH鍵がリストされない場合は、。
こともできます。
WSLでGitコミット署名を設定したら、Windowsホストと同じ手順を使って設定をテストできます。、、。
Windowsホストで1Password SSHエージェントを使ってGit以外のSSHリクエストを認証する予定の場合は、オプションでssh.exeとssh-add.exeの代わりにコマンドラインでsshとssh-addを使用するエイリアスをにCreateできます。
それでもエラーが表示される場合は、([interop])がWSL設定ファイルでオンになっていることを確認してください。オンになっている場合、エントリーは次のようになります。