Open2

WSL2でssh-agentを設定する

mimikunmimikun

WSL2でssh-agentを設定する

参考: Windows 10のssh-agentをWSL2から使う - () ◉ - ◉)<さいとてつや
非常に難解でわかりにくい。
https://github.com/rupor-github/wsl-ssh-agent#wsl2-compatibility に沿って作業する。
まずは npiperelay をインストールする。
ビルド済みバイナリが存在しないのでビルドしなければならない。
自分のWindowsにはGolangがインストールされていないので、クロスコンパイルを使ってWSLからWindowsバイナリを生成することにした。

goのバージョンは go version go1.21.7 linux/amd64

ghq get github.com/jstarks/npiperelay
go get -d github.com/jstarks/npiperelay
GOOS=windows go build -o /mnt/c/Users/MY_USER_NAME/go/bin/npiperelay.exe github.com/jstarks/npiperelay

次にこれにsymlinkを張り、WSLで実行可能にする。

sudo ln -s /mnt/c/Users/MY_USER_NAME/go/bin/npiperelay.exe /usr/local/bin/npiperelay.exe

次にsocatをインストールする。

sudo apt install socat

次に wsl-ssh-agent-relay をインストールする。

cd ~/.local/bin/
wget https://raw.githubusercontent.com/rupor-github/wsl-ssh-agent/master/docs/wsl-ssh-agent-relay
chmod +x wsl-ssh-agent-relay
chezmoi add wsl-ssh-agent-relay

なんか問題がありそうな気がするがこれは後で解決するのでスキップ。

次に以下2行をシェル設定ファイルに追記する。
bash, fish, zsh, nyagos, powershell と5つもあるので大変。

${HOME}/.local/bin/wsl-ssh-agent-relay start
export SSH_AUTH_SOCK=${HOME}/.ssh/wsl-ssh-agent.sock

終わったら、PCを再起動する。

まぁ当然うまく行かなかった。
パスフレーズを覚えてくれない。

試行錯誤

1. Windowsでssh-addする

~/.ssh/id_ed25519 をWindowsへ持っていき、Windowsで ssh-add する
これを行った場合、Windowsではパスフレーズ不要となったが、WSLでは毎回パスフレーズを求められた。
失敗。

結論

過剰なセキュリティは利便性の低下を招く

パスフレーズなしのSSHキーに切り替えて解決した。
計算通り、完璧〜♪