Windows Terminal SSH connection profiles
Windows Terminal is one of my favorite and most used tools after migrating to Windows and WSL2 last year. I use if to access all my WSL2 instances, Powershell and I keep track of my SSH connections.
Adding an SSH connection to the list of profiles can be done by creating a new profile and configuring the “commandline” setting as follows:
"commandline": "wsl.exe /usr/bin/ssh myuser@mydomain"
Sadly, this did not work for me because of my Yubikey and GPG4Win setup. During the login in my Ubuntu WSL2 instance, I need to execute the following commands before Linux is able to access the GPG socket from Windows exposing the Yubikey device:
$HOME/.local/bin/gpg-agent-relay start
export SSH_AUTH_SOCK=$HOME/.gnupg/S.gpg-agent.ssh
Since I do not want to execute those 2 commands manually on each login, I added those to my user’s .bashrc file. However, when running a Linux command via wsl.exe, the .bashrc file is not executed. The fix I came up with, is creating a separate bash script that will run the commands above before running the SSH command:
#!/bin/bash
$HOME/.local/bin/gpg-agent-relay start
export SSH_AUTH_SOCK=$HOME/.gnupg/S.gpg-agent.ssh
ssh $1
Now I can call the script in the “commandline” setting of my Windows Terminal profile:
"commandline": "wsl.exe /home/myuser/bin/wslssh.sh myuser@mydomain"