Reputation: 2358
I run Windows 10 with WSL. I have the desired behaviour on one computer, but cannot replicate elsewhere. Here's what I'm after:
Things I've tried:
eval $(ssh-agent)
, followed by ssh-add
; it will remember the passphrase, but if I put it in my ~/.bash_profile
then it prompts me for every new console window, and I open a lot - many of which I'm not using git in.git config --global credential.helper
to cache
or store
bash.exe
and wsl.exe
to get git-credentials-manager.exe
to workHere's an example of what I've put in my ~/.gitconfig
:
[credential]
helper = "/mnt/c/Program\\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
I've installed the git credential manager
from here and have also tried the main Git For Windows installation as an alternative.
How can I encourage it to remember my passphrase?
Upvotes: 40
Views: 18885
Reputation: 465
I tried both methods in previous answers (as well as others found elsewhere) on WSL 2 and they either did not work or had caveats I couldn't live with. This is what worked for me.
Install keychain:
sudo apt install keychain
Then add the following line to your shell's configuration file (likely ~/.bashrc
or ~/.zshrc
):
eval `keychain --quiet --eval --agents ssh path_to_your_ssh_key`
Now you will only have to enter your password when booting WSL!
Thank you Birk Holland for this article.
Upvotes: 24
Reputation: 746
I tried the option to add AddKeysToAgent yes
to ~/.ssh/config
but it doesn't keep it between new tabs on the terminal.
The best solution I found so far is to do the following:
sudo apt install keychain
Find your hostname using the terminal:
hostname
Then add the following to your ~/.bashrc
or ~/.zshrc
file:
/usr/bin/keychain --nogui ~/.ssh/id_rsa
source $HOME/.keychain/YOUR-HOSTNAME-HERE-sh
Now, each time you reboot, you’ll have to enter your passphrase. But you only have to do it one time until you reboot or terminate WSL.
If you want to use the same key you already have on Windows you can follow this post Sharing SSH keys between Windows and WSL 2
Upvotes: 63
Reputation: 2358
I found the answer!
First, make sure you have ssh-agent
running all the time by adding eval $(ssh-agent)
to your .bash_profile
.
Then add AddKeysToAgent yes
to your ssh config:
touch ~/.ssh/config
chmod 600 ~/.ssh/config
echo "AddKeysToAgent yes" >> ~/.ssh/config
You'll get prompted when you first do some ssh, but the passphrase will be automatically added to the ssh-agent
so you won't have to type it again until you end your session and start a new one.
Upvotes: 23