avesome-tricks/ssh-agent-in-wsl.md

39 lines
1.4 KiB
Markdown
Raw Normal View History

# 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`
2025-01-12 16:45:31 +01:00
## 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)