WSL2 の SSH Agent 盆栽

この記事を読んでセットアップしたので備忘録として残しておく。

qiita.com

自分の選択はこのチャートの青線で書いたやつにした。

手順

元々「Windows の機能」で OpenSSH をインストールしてある。

Pageant は使ってないので WSL2 も OpenSSH に寄せる。

Linuxsocat を、 Windowsnpiperelay をインストールする。

$ 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_SOCKUnix ソケットをリッスンして、接続があれば npiperelay を起動し転送する。npiperelay は標準入力を \\.\pipe\open-ssh-agent の名前付きパイプに転送する。\\.\pipe\open-ssh-agentWindows の OpenSSH が待ち受けている。

setsid とか nohup が何かよく分かってない。