WSL2でssh-agentを設定する
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キーに切り替えて解決した。
計算通り、完璧〜♪
WSLでssh-agentを設定する · Issue #245 · mimikun/dotfiles
そもそもパスフレーズ入力がだるいだけなのでパスフレーズとかいらなかった。