WSL2(&fish)で1PasswordからSSH認証する
ほぼこれ
1Password 8を使うと~/.sshに鍵がなくても認証できるようになります
署名もこれでできる、今回はやってないけど
を見て自分が使ってるアプリケーションが1Passwordのssh認証に対応しているか見る
方法も書いてあるのでやる
今回はGit CLI
Windows, Macは難しくないのでやるだけ
設定からssh agentを有効化する
Windowsからだと一回生体認証したらしばらく生体認証が要求されなくなるがWSL2だと常に要求されるので"Ask approval for each new"は"application and terminal session"から"application"にする
https://scrapbox.io/files/6367831482231b001d538239.png
WSL2でかつfishを利用している場合のメモ
必要なものをインストール
Windows側(PowerShell)にnpiperelayを入れる
WSL2からWindowsのssh-agentを利用するやつ
バイナリ直ダウンロードでもいいけどscoopで入ります
scoopだとパスが環境によらないので便利
extras bucketに入ってるので先にscoop bucket add extrasをする
scoop install npiperelay
2023/06/22追記 wingetでも入った
WSL2側にsocatを入れる
ソケット通信をリレーするやつ
sudo apt install socatで入る
brewでも入るっぽい、好みで
以下のコードで動作確認
code:sh
export SSH_AUTH_SOCK=$HOME/.ssh/agent.sock
set -x NPIPERELAY /mnt/c/Users/kira/scoop/shims/npiperelay.exe
socat UNIX-LISTEN:$SSH_AUTH_SOCK,fork EXEC:"$NPIPERELAY -ei -s //./pipe/openssh-ssh-agent",nofork &
起動時に常にこれをしたいのでWSL2側の~/.config/fish/config.fishに書く
環境変数はconfig.fishに書いてもいいけどset -Ux SSH_AUTH_SOCK ~/.ssh/agent.sockするとよい
-Uだと環境変数にならないので-Uxすること
code:python
if ! ss -a | grep -q $SSH_AUTH_SOCK >/dev/null 2>&1
if test -S $SSH_AUTH_SOCK
echo "removing previous socket..."
rm -f $SSH_AUTH_SOCK
end
echo "Starting SSH-Agent relay..."
set -x NPIPERELAY /mnt/c/Users/kira/scoop/shims/npiperelay.exe
eval (socat UNIX-LISTEN:$SSH_AUTH_SOCK,fork EXEC:"$NPIPERELAY -ei -s //./pipe/openssh-ssh-agent",nofork &) >/dev/null 2>&1
end
終わり