avesome-tricks/ssh-agent-in-wsl.md
2025-01-12 16:45:31 +01:00

1.4 KiB
Executable file

SSH agent in WSL

There are a plenty of ways to enable the SSH agent in WSL to avoid the password ask at every connect to a remote host.

One of them is the following.

Add these lines to the ~/.profile file

ssh_pid=$(pidof ssh-agent)

# If the agent is not running, start it, and save the environment to a file
if [ "$ssh_pid" = "" ]; then
        ssh_env="$(ssh-agent -s)"
        echo "$ssh_env" | head -n 2 | tee ~/.ssh_agent_env > /dev/null
init=1
fi

# Load the environment from the file
if [ -f ~/.ssh_agent_env ]; then
        eval "$(cat ~/.ssh_agent_env)"
fi

After every start of WSL, add the key to the SSH agent and unlock it with the password. For example when starting the day, after WSL start ssh-add ~/.ssh/id_ed25519

Forward agent

Usualy a good idea to forward the agent. With this if using a jump host, you do not need to reenter the password if connect from a host to another host. Add this or create the ~/.ssh/config file

Host *
	ServerAliveInterval 15
	ForwardAgent yes

ServerAlive useful, if the underlying connection closes the TCP sockets, E.G. Cisco EPC3925 or NATted cellular networks. This option sends dummy packet every 15 secs to keep the connection up.

todo

  • Add the ability to ask the key password on login
  • Store the SSH key between restarts (probably requires external packages)