ただのにっき
2020-02-06(木) [長年日記]
■ WSLでWindows10標準のssh-agentを使うようにした
Windowsネイティブ側とWSL側でssh鍵を共有するのに、2年前からPuTTY付属のpageantをweasel-pageantを経由してWSLから利用するようにしていたんだけど、「そういえば最近のWindowsにはOpenSSHが標準でインストールされてるんじゃなかったっけ?」と思っていろいろ調べた。
まず、Windows/System32/OpeSSHの下に、ssh関連のバイナリが全部入ってる。もちろんssh-agentも。しかもこのssh-agent、ちゃんとWindows Serviceとして動作するので(サービスから「OpenSSH Authentication Agent」を有効にしてやる必要がある)、自動起動するようにしてやれば良い。あとはssh-addしてやればパスフレーズも覚えてくれる。
あとはWSLとの連携だが、もちろん誰かが作っているわけです、rupor-github/wsl-ssh-agent。実はこの前にssh-agent-wslという実装を使っていたんだけど、新しいWSLの仕組みを使ってもっと簡便にした同じ作者のwsl-ssh-agentが出たので移ったのだ。ググると古いssh-agent-wslの解説記事がいっぱいひっかかるので、騙されてはいけない。
あとはREADMEのとおりに
- Windows側で-socketオプションをつけて起動(ショートカットにしてStartupに入れておく)
- WSL側でSSH_AUTH_SOCK環境変数に上の-socketオプションに指定したファイルを(WSL向けにパスを変換して)指定(.profileなりに書いておく)
で普通に使えるようになる。めでたしめでたし。これで長年世話になったPuTTYとついに決別できた。pageantのためだけに残してあったもんなー。
……と喜んでいたけど、WSL2になったらまた仕組みが変わっていろいろ変更するはめになるんですかね? まぁいいか。