はじめに
この記事は,githubにsshアクセスし,gpgで署名付きのコミットを行うための環境整備手順です。
やりたいこと
鍵管理はGpg4winに集中させたいと思います。ssh鍵は、gpgの副鍵の一つとして扱いたいです。
また,Git for Windowsでgithubにsshアクセスできるようにもしたいと思います。
インストール
Gpg4win
普通にインストールするだけです。
Git for Windows
普通にインストールするだけですが,「Choosing the SSH executable」で「Use exteral OpenSSH」を選びます。
OpenSSHを別途準備するのは,Git for Windows はMSYS2ベースで、内蔵の OpenSSH が ssh-agent と通信しようとする方法が,Gpg4win の期待する方法と異なるためです。
Win32-OpenSSH
Win32-OpenSSHをインストールします。
wsl-ssh-pagent
wsl-ssh-pagentをインストールします。
NamedPipeでの接続を待ち受け,pagent_shmを使ってGpg4winの提供するssh-agentに接続します。
設定
wsl-ssh-pagent
wsl-ssh-pagent-amd64-guiを以下のパラメータで自動起動するように設定します。
> wsl-ssh-pageant-amd64-gui.exe --winssh ssh-pageant --systray
-gui付きのバイナリはコマンドウィンドウを出さないバージョンなので,--systray
オプションを付けます。
OpenSSHはNamed Pipeのssh-pagent
に接続すれば、wsl-ssh-pagent 経由でGpg4winと通信できるようになります。
なお今回は、WSLからの接続を中継するための機能は使いません。WSL2の中継が必要であれば,また別のプログラムが必要です。
OpenSSH
この設定により、Win32-OpenSSHがNamed Pipeのssh-pagent
に接続するようになります。
参考
混沌を極めるWindowsのssh-agent事情
GPG + Git SSH Authentication and Signing on Windows 10