WSL

1passwordで登録したSSHキーをWSLで利用する方法

はじめに

1passwordで登録したSSHキーをWSLで利用する方法を紹介します。

前回はWindowsで利用できるOpenSSHでSSHキーを利用する方法を紹介しました。

1passwordでSSHキーを管理する機能がver8.6でサポートしてたので試してみた。 - 技術的な何か。
1passwordでSSHキーを管理する機能がver8.6でサポートしてたので試してみた。 - 技術的な何か。

はじめに 1passwordでSSHキーの管理が利用できるように3月ぐらいからなってたので試してみました。 Windows版はフルサポートになっていますがMac版やLinux版は1password自体

level69.net

普段はWSLで作業を行っているので1passwordを利用する方法を紹介します。というか結論としては便利すぎ。

WSLからパイプする

WSLから1passwordで登録したSSHキーを利用する仕組みは以下です。

ここで必要となるソフトウェアが2つあります。

Windows側

  • npiperelay

WSL側

  • socat

WSL側sshはsocatからnpiperelay、ssh-agentにパイプされSSHキーを参照することができます。

構成はシンプルです。

Windows側の設定

npiperelayを下記からダウンロードします。適当な場所に解凍しましょう。保存場所はWSLから参照できる場所です。今回は c:\npiperelay に配置しています。

https://github.com/jstarks/npiperelay/releases/download/v0.1.0/npiperelay_windows_amd64.zip

GitHub - jstarks/npiperelay: npiperelay allows you to access Windows named pipes from WSL
GitHub - jstarks/npiperelay: npiperelay allows you to access Windows named pipes from WSL

npiperelay allows you to access Windows named pipes from WSL - jstarks/npiperelay

github.com

Windows側はこれで完了です。

WSL側の設定

socatをインストールします。

sudo apt install socat

インストールはこれで完了です。

次に、以下のように設定します。npiperelay.exe の保存場所に読みかえてください。

export SSH_AUTH_SOCK=$HOME/.ssh/agent.sock
socat UNIX-LISTEN:$SSH_AUTH_SOCK,fork EXEC:"/mnt/c/npiperelay/npiperelay.exe -ei -s //./pipe/openssh-ssh-agent",nofork &

 

オプション

WSL起動時に上記の設定を入力するのは面倒なので  .bashrcなどに書き込みます

export SSH_AUTH_SOCK=$HOME/.ssh/agent.sock
ALREADY_RUNNING=$(ps -auxww | grep -q "[n]piperelay.exe -ei -s //./pipe/openssh-ssh-agent"; echo $?)
if [[ $ALREADY_RUNNING != "0" ]]; then
    if [[ -S $SSH_AUTH_SOCK ]]; then
        echo "removing previous socket..."
        rm $SSH_AUTH_SOCK
    fi
    echo "Starting SSH-Agent relay..."
    (setsid socat UNIX-LISTEN:$SSH_AUTH_SOCK,fork EXEC:"/mnt/c/npiperelay/npiperelay.exe -ei -s //./pipe/openssh-ssh-agent",nofork &) >/dev/null 2>&1
fi

参考

Forwarding SSH Agent requests from WSL to Windows - stuartleeks.com
Forwarding SSH Agent requests from WSL to Windows - stuartleeks.com

Store your SSH keys in Windows and access them from your WSL distros

stuartleeks.com

WSL起動するとソケットが削除されリレーが開始します。

まとめ

WSLで利用する方法を紹介しました。この機能は非常便利です。個人的には1passwordを使い続ける限りはこの機能を利用していくと思います。

それだけの便利な機能だと思います。

 

-WSL
-, ,