Windows: Use Windows WSL openssh client with PuTTY agent

Hi,

newer versions of the PuTTY-CAC agent can act as ssh agent for Windows WSL 1 ssh clients.

Putty can open UNIX sockets which the wsl ssh client can use.

This can be done by starting the putty agent with the parameter –unix

D:\> D:\PuTTY-CAC\pageant.exe pageant --unix C:\Users\michael\.ssh\agent.sock

In your WSL environment set the variable SSH_AUTH_SOCK

SSH_AUTH_SOCK=/mnt/c/Users/michael/.ssh/agent.sock

or add an include to your /mnt/c/Users/michael/.ssh/config

IdentityAgent /mnt/c/Users/michael/.ssh/agent.sock
michael@wsl ~ # ssh root@10.10.10.220
 ____            _          _   _  _   ____
|  _ \ ___   ___| | ___ __ (_) | || | | __ )
| |_) / _ \ / __| |/ / '_ \| | | || |_|  _ \
|  _ < (_) | (__|   <| |_) | | |__   _| |_) |
|_| \_\___/ \___|_|\_\ .__/|_|    |_| |____/
                     |_|
Welcome to Armbian 20.11 Bionic with Linux 5.9.11-rockchip64

System load:   49%               Up time:       88 days 4:10
Memory usage:  10% of 3.71G     Zram usage:    12% of 1.85G     IP:            10.10.10.220
CPU temp:      39°C             Usage of /:    42% of 29G

For WSL 2 this wouldn’t work because each WSL 2 instance has its own kernel could not reach the PuTTY agent socket /mnt/c/Users/michael/.ssh/agent.sock

A helper/mapper is needed. This can be done by my .NET Application PageantRelayNamedPipe or the .NET Core Application PageantRelaySocket.
Download the one of the last release, keep in mind PageantRelaySocket requires the installation .NET core. and extract it to C:\Users\michael\.ssh\

Then prepare your Environment. Create a folder .ssh in your Userprofile folder.

D:\> mkdir %USERPROFILE%\.ssh

Configure your PuTTY Auth Agents command line parameter. When you use PageantRelayNamedPipe then add –openssh-config

D:\PuTTY-CAC\pageant.exe --openssh-config C:\Users\michael\.ssh\pageant.conf

If you want to use PageantRelaySocket then add –unix

D:\PuTTY-CAC\pageant.exe --unix C:\Users\michael\.ssh\agent.sock

Note: For a simple configuration pageant.conf and agent.sock are hardcoded in PageantRelayNamedPipe and PageantRelaySocket .

Then prepare your WSL 2 instance.

Enter instance

PS D:\> wsl -d Debian

Install requiered packages

michael@debdev-wsl:/mnt/c/Users/Michael$ sudo apt install socat iproute2

Start the PuTTY agent forwarding (NamedPipe Version)

michael@debdev-wsl:/mnt/c/Users/Michael$ export SSH_AUTH_SOCK="/home/michael/.ssh/agent.sock"
michael@debdev-wsl:/mnt/c/Users/Michael$ rm $SSH_AUTH_SOCK
michael@debdev-wsl:/mnt/c/Users/Michael$ setsid nohup socat UNIX-LISTEN:"$SSH_AUTH_SOCK,fork" EXEC:"/mnt/c/users/michael/.ssh/PageantRelayNamedPipe.exe" &
nohup: ignoring input and appending output to 'nohup.out'

Start the PuTTY agent forwarding (Socket Version)

michael@debdev-wsl:/mnt/c/Users/Michael$ export SSH_AUTH_SOCK="/home/michael/.ssh/agent.sock"
michael@debdev-wsl:/mnt/c/Users/Michael$ rm $SSH_AUTH_SOCK
michael@debdev-wsl:/mnt/c/Users/Michael$ setsid nohup socat UNIX-LISTEN:"$SSH_AUTH_SOCK,fork" EXEC:"/mnt/c/users/michael/.ssh/PageantRelaySocket.exe" &
nohup: ignoring input and appending output to 'nohup.out'

Then not try to connect

michael@debdev-wsl ~ # ssh root@10.10.10.220
 ____            _          _   _  _   ____
|  _ \ ___   ___| | ___ __ (_) | || | | __ )
| |_) / _ \ / __| |/ / '_ \| | | || |_|  _ \
|  _ < (_) | (__|   <| |_) | | |__   _| |_) |
|_| \_\___/ \___|_|\_\ .__/|_|    |_| |____/
                     |_|
Welcome to Armbian 20.11 Bionic with Linux 5.9.11-rockchip64

System load:   2%               Up time:       88 days 4:10
Memory usage:  10% of 3.71G     Zram usage:    23% of 1.85G     IP:            10.10.10.220
CPU temp:      45°C             Usage of /:    55% of 29G

Troubleshooting WSL2: If forwarding won’t work.
Start socat in foreground. In most cases this gives some hints whats going wrong: Omit leading “setsid nohup” and trailing “&”:

michael@debdev ~ # socat UNIX-LISTEN:"$SSH_AUTH_SOCK,fork" EXEC:"/mnt/c/users/michael/.ssh/PageantRelaySocket.exe"

Michael

Advertisment to support michlstechblog.info

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.