BLOGTIMES
2021/05/23

Git for Windows でも Pageant が使いたい

  ssh  git  PuTTY  windows10 
このエントリーをはてなブックマークに追加

Git for Windows で Pageant を使った認証をやろうとしたら意外と面倒な作業になってしまいました。

[失敗] plink.exe は簡単だけど・・・

Git for Windows で ssh の公開鍵認証をしたい場合には、最も単純な方法として環境変数 GIT_SSH に PuTTY の plink.exe のパスを設定する方法があります。さっそく試してみたところ、以下のプロンプトが出たときに y を入力することとができないので、この方法は断念。ネットで検索*1するとそれなりの件数がヒットするので、良くあるハマりパターンのようです。

Store key in cache? (y/n)

Windows 10 付属の OpenSSH + wsl-ssh-pageant + Pageant (PuTTY) の組み合わせ

僕は普段、SSH は TeraTerm + Pageant (PuTTY) という環境で使っていて、公開鍵の管理も Pageant に寄せてあります。最近の Windows 10 には OpenSSH が標準で搭載されていますが、これは Pageant にはもちろん対応していないので、これまで使うことはありませんでした。

単純な方法としては .ppk を OpenSSH 形式に変換して鍵自体を OpenSSH に合わせてしまうという方法もありますが、これは秘密鍵をもう一式持つことになるという欠点がありませす。鍵のファイルが増えると管理が面倒なので、今回は OpenSSH と Pageant の仲立ちをしてくれる wsl-ssh-pageant というユーティリティを使う事にしました。この方法も結構面倒ですが、鍵の管理に比べたらマシです。

wsl-ssh-pageant のセットアップ

wsl-ssh-pageant のリポジトリから wsl-ssh-pageant-amd64-gui.exe のバイナリを取得します。
適当なところに配置したら、バイナリと同じ場所に以下のような bat ファイルを作成します。

wsl-ssh-pageant-start.bat

start wsl-ssh-pageant-amd64-gui.exe -systray -winssh ssh-pageant

ファイルができたら、あとはこの bat をダブルクリックすると wsl-ssh-pageant を起動することができます。
うまく起動できればタスクトレイにオレンジ色の鍵のアイコンが見えるはずです。

次回以降は自動起動するように、スタートアップにショートカットを放り込んでおくと良いと思います。

OpenSSH と Git for Windows の設定

あとは Git for Windows に Windows 10 標準の OpenSSH を使うようにすることと、Windows 10 標準の OpenSSH に ssh-agent の代わりに wsl-ssh-pageant を使うように設定をしてやれば、頭書の問題は解決できます。前者は GIT_SSH 環境変数を設定することで、後者は SSH_AUTH_SOCK 環境変数を設定することでそれぞれ実行することができます。

GUI からやっても良いのですが、打ち間違えが怖いのでコマンドで直接レジストリを書き換えることにします。
ユーザー環境変数で十分なので、以下のコマンドは管理者権限で実行する必要はありません

cmd /c reg add "HKCU\Environment" /v GIT_SSH /t REG_SZ /d "C:/Windows/System32/OpenSSH/ssh.exe" /f cmd /c reg add "HKCU\Environment" /v SSH_AUTH_SOCK /t REG_SZ /d "\\.\pipe\ssh-pageant" /f

これで Git for Windows でも Pageant による公開鍵認証ができるはずです。


トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/12492
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン