Ik gebruik Bitwarden om mijn SSH-keys te beheren. De Bitwarden Desktop-app op Windows 11 werkt prima als SSH-agent, maar WSL2 draait in zijn eigen lichtgewicht virtuele machine zonder directe toegang tot de Windows SSH-agent. De oplossing: Windows named pipes doorzetten naar een Unix-socket in WSL2, met npiperelay en socat.

Installatie#

npiperelay installeren op Windows

Download npiperelay.exe van de releases-pagina en zet het ergens toegankelijks neer, bijvoorbeeld /mnt/c/Users/Kevin/.local/bin/npiperelay.exe.

socat installeren in WSL2

sh
sudo apt install socat

Shell configureren

Voeg dit toe aan ~/.bashrc of ~/.zshrc:

sh
export SSH_AUTH_SOCK="$HOME/.ssh/agent.sock"

ss -a | grep -q "$SSH_AUTH_SOCK"
if [ $? -ne 0 ]; then
    rm -f "$SSH_AUTH_SOCK"
    (setsid socat UNIX-LISTEN:"$SSH_AUTH_SOCK",fork EXEC:"/mnt/c/Users/Kevin/.local/bin/npiperelay.exe -ei -s //./pipe/openssh-ssh-agent",nofork &) >/dev/null 2>&1
fi

Dit zet de SSH-socket klaar, checkt of socat al luistert, en start zo nodig de relay tussen de Unix-socket en de Windows named pipe.

SSH-agent inschakelen in Bitwarden

Zet in Bitwarden Desktop, onder Instellingen, de SSH-agent-optie aan.

Controleren#

sh
ssh-add -l

in een nieuwe WSL2-terminal — je zou nu de keys uit Bitwarden moeten zien.

Problemen oplossen#

  • Een “Agent refused operation”-fout betekent meestal dat Bitwarden goedkeuring voor het gebruik van de key vraagt via zijn eigen UI.
  • Controleer de pipe-naam via PowerShell:
powershell
Get-ChildItem \\.\pipe\ | Where-Object Name -like '*ssh*'
  • Zorg dat ~/.ssh/ bestaat met de juiste rechten:
sh
chmod 700 ~/.ssh

Bron#

Using Bitwarden’s SSH Agent in WSL2