记住 WSL 中的 git 密码

Con*_*nan 19 git ssh-agent windows-subsystem-for-linux

我使用 WSL 运行 Windows 10。我在一台计算机上有所需的行为,但无法在其他地方复制。这是我所追求的:

  1. 我第一次使用 ssh 密钥运行远程 git 命令时,git 提示我输入密码
  2. 随后没有提示,包括在新的终端窗口中(我使用 ConEmu)
  3. 当所有控制台窗口都关闭时,回到#1

我尝试过的事情:

  • 使用eval $(ssh-agent), 后跟ssh-add; 它会记住密码,但如果我把它放在我的~/.bash_profile那么它会提示我输入每个新的控制台窗口,并且我打开了很多 - 其中许多我没有使用 git。
  • 设置git config --global credential.helpercachestore
  • 一切 这里的
  • 使用bash.exewsl.exe得到git-credentials-manager.exe工作

这是我放入我的内容的示例 ~/.gitconfig [credential] helper = "/mnt/c/Program\\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"

我已经安装了git credential manager这里并且还尝试了主要的 Git For Windows 安装作为替代。

我怎样才能鼓励它记住我的密码?

小智 20

我尝试了添加AddKeysToAgent yes到的选项,~/.ssh/config但它没有将它保留在终端上的新选项卡之间。

到目前为止,我找到的最佳解决方案是执行以下操作:

sudo apt install keychain
Run Code Online (Sandbox Code Playgroud)

使用终端查找您的主机名:

hostname
Run Code Online (Sandbox Code Playgroud)

然后将以下内容添加到您的~/.bashrc~/.zshrc文件中:

/usr/bin/keychain --nogui ~/.ssh/id_rsa
source $HOME/.keychain/YOUR-HOSTNAME-HERE-sh
Run Code Online (Sandbox Code Playgroud)

现在,每次重新启动时,您都必须输入密码。但是您只需执行一次,直到您重新启动或终止 WSL。

如果你想使用你在 Windows 上已经拥有的相同密钥,你可以按照这篇文章在 Windows 和 WSL 2 之间共享 SSH 密钥

  • 这对我有用,谢谢:)我建议的一件事是使用“--quiet”标志来抑制每次打开新终端时输出的日志。 (7认同)

Con*_*nan 16

我找到了答案!

首先,ssh-agent通过添加eval $(ssh-agent)到您的.bash_profile.

然后添加AddKeysToAgent yes到您的 ssh 配置中:

touch ~/.ssh/config
chmod 600 ~/.ssh/config
echo "AddKeysToAgent yes" >> ~/.ssh/config
Run Code Online (Sandbox Code Playgroud)

当您第一次执行 ssh 时,您会收到提示,但密码短语会自动添加到 ssh 中,ssh-agent因此您不必再次输入,直到您结束会话并开始新的会话。

  • @Ryan 也许这是相关的(抱歉我没有 mac):/sf/ask/3036794001/ (2认同)

Nol*_*ait 8

我在 WSL 2 的先前答案(以及其他地方找到的其他答案)中尝试了这两种方法,但它们要么不起作用,要么有我无法忍受的警告。这对我有用。

安装钥匙串

sudo apt install keychain
Run Code Online (Sandbox Code Playgroud)

然后将以下行添加到您的 shell 的配置文件(可能~/.bashrc~/.zshrc):

eval `keychain --quiet --eval --agents ssh id_rsa`
Run Code Online (Sandbox Code Playgroud)

现在,您只需在启动 WSL 时输入密码即可!

感谢伯克·霍兰德 (Birk Holland)撰写的这篇文章

  • 哦,谢谢您添加这个,钥匙串从来没有工作过,因为缺少需要在 WSL 中使用的依赖项。很高兴知道它已被添加,这使事情变得更加容易! (2认同)
  • 我已经尝试了所有其他建议,但你的建议一开始就有效。谢谢。 (2认同)