WSL2 の SSH Agent 盆栽
この記事を読んでセットアップしたので備忘録として残しておく。
自分の選択はこのチャートの青線で書いたやつにした。
手順
元々「Windows の機能」で OpenSSH をインストールしてある。
Pageant は使ってないので WSL2 も OpenSSH に寄せる。
Linux
に socat
を、 Windows に npiperelay
をインストールする。
$ sudo apt install socat
$ choco install npiperelay
~/.bash_profile
からこの start_ssh_agent_wsl
を呼ぶ。
start_ssh_agent_wsl() { if [ -z "$SSH_AUTH_SOCK" ] then SSH_AUTH_SOCK=$(mktemp -d /tmp/ssh-auth.XXXX)/sock setsid socat UNIX-LISTEN:"$SSH_AUTH_SOCK",fork EXEC:'npiperelay -v //./pipe/openssh-ssh-agent',nofork >>/tmp/ssh-agent.log 2>&1 & export SSH_AUTH_SOCK fi }
$SSH_AUTH_SOCK
で Unix ソケットをリッスンして、接続があれば npiperelay
を起動し転送する。npiperelay
は標準入力を \\.\pipe\open-ssh-agent
の名前付きパイプに転送する。\\.\pipe\open-ssh-agent
は Windows の OpenSSH が待ち受けている。
setsid
とか nohup
が何かよく分かってない。