【问题标题】:Remember git passphrase in WSL记住 WSL 中的 git 密码
【发布时间】:2019-02-24 16:15:00
【问题描述】:

我使用 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
  • 一切here
  • 使用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


    【解决方案1】:

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

    安装keychain:

    sudo apt install keychain
    

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

    eval `keychain --quiet --eval --agents ssh id_rsa`
    

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

    感谢Birk Holland this article。

    【讨论】:

    • 哦,谢谢你添加这个,钥匙串从来没有用过,因为在 WSL 中缺少一个需要可用的依赖项。很高兴知道它已被添加,这让事情变得更容易!
    • 我已经尝试了所有其他建议,但你的建议一开始就奏效了。谢谢。
    【解决方案2】:

    我尝试了将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 上已有的相同密钥,可以关注此帖子 Sharing SSH keys between Windows and WSL 2

    【讨论】:

    • 这对我有用,谢谢 :) 我推荐的一件事是使用 --quiet 标志来抑制每次打开新终端时输出的日志。
    • 切换已接受的答案,因为我已经尝试过了,而且效果更好 - 现在我在 Windows 会话中被要求输入我的密码,并且它在所有 WSL 会话中持续存在。整洁!
    • @Conan,您的回答允许将密码短语输入推迟到第一次使用密钥。是否可以使用keychain 实现相同的行为?
    • 据我所知,我认为您必须弄乱 ssh-agent 才能获得这种行为。请注意,钥匙串只询问一次,并且在您重新启动 WSL 之前它会记住,所以它非常不显眼
    【解决方案3】:

    我找到了答案!

    首先,通过将eval $(ssh-agent) 添加到您的.bash_profile 来确保ssh-agent 一直在运行。

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

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

    当您第一次执行 ssh 时,系统会提示您,但密码会自动添加到 ssh-agent,因此您无需再次输入,直到您结束会话并开始新的会话。

    【讨论】:

    • 在 Mac 上不能相同。我按照你的指示,当我关闭并重新打开终端时,我得到了Bad configuration option: addkeystoagent
    • @Ryan 也许这是相关的(抱歉我没有mac):stackoverflow.com/questions/43382771/…
    • 感谢发送。
    • 不知何故对我不起作用。我最终在bash_profile.sh 文件的末尾添加了以下行:echo "Starting the ssh-agent..." eval $(ssh-agent) cd "C:\MyGitRepos" ssh-add(注意:每个命令都在新行上)。这样,每次打开 git bash 时,它都会自动提示输入密码,并且每次会话输入一次。
    猜你喜欢
    • 2012-10-18
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多