记住 WSL 中的 git 密码

问题描述 投票:0回答:3

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

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

我尝试过的事情:

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

这是我在

~/.gitconfig
中放入的内容的示例:

[credential]
   helper = "/mnt/c/Program\\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"

我已经从

here
安装了 git credential manager,并且还尝试了主要的 Git For Windows 安装作为替代方案。

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

git windows-subsystem-for-linux ssh-agent
3个回答
54
投票

我尝试了将

AddKeysToAgent yes
添加到
~/.ssh/config
的选项,但它不会将其保留在终端上的新选项卡之间。

迄今为止我发现的最佳解决方案是执行以下操作:

sudo apt install keychain

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

hostname

然后将以下内容添加到您的

~/.bashrc
~/.zshrc
文件中:

/usr/bin/keychain --nogui ~/.ssh/id_rsa
source $HOME/.keychain/YOUR-HOSTNAME-HERE-sh

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

如果您想使用 Windows 上已有的相同密钥,可以关注这篇文章 在 Windows 和 WSL 2 之间共享 SSH 密钥


22
投票

我找到答案了!

首先,将

ssh-agent
添加到
eval $(ssh-agent)
中,确保
.bash_profile
始终运行。

然后将

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

touch ~/.ssh/config
chmod 600 ~/.ssh/config
echo "AddKeysToAgent yes" >> ~/.ssh/config

首次执行 ssh 操作时,您会收到提示,但密码将自动添加到

ssh-agent
中,因此您无需再次输入密码,直到结束会话并开始新会话为止。


22
投票

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

安装钥匙扣

sudo apt install keychain

然后将以下行添加到 shell 的配置文件中(可能是

~/.bashrc
~/.zshrc
):

eval `keychain --quiet --eval --agents ssh path_to_your_ssh_key`

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

感谢 Birk Holland 这篇文章

© www.soinside.com 2019 - 2024. All rights reserved.