记住WSL中的git passphrase

时间:2018-09-20 11:02:09

标签: git windows-subsystem-for-linux ssh-agent

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

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

我尝试过的事情:

  • 使用eval $(ssh-agent),后跟ssh-add;它会记住该密码,但是如果我将其放在~/.bash_profile中,那么它将提示我输入每个新的控制台窗口,并且打开很多-很多我没有使用git in。
  • git config --global credential.helper设置为cachestore
  • 一切here
  • 使用bash.exewsl.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的主要安装。

我如何鼓励它记住我的密码?

3 个答案:

答案 0 :(得分:6)

我尝试了将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

进行操作。

答案 1 :(得分:3)

我找到了答案!

首先,通过将version: '2' services: hdshortvideo-app: image: path of image environment: # - _JAVA_OPTIONS=-Xmx512m -Xms256m - SPRING_PROFILES_ACTIVE=prod,swagger - SPRING_DATA_MONGODB_URI=mongodb://hdshortvideo-mongodb:27017 - SPRING_DATA_MONGODB_DATABASE=shortvideo - JHIPSTER_SLEEP=30 # gives time for the JHipster Registry to boot before the application - SPRING_DATA_JEST_URI=http://hdshortvideo-elasticsearch:9200 hdshortvideo-mongodb: extends: file: mongodb.yml service: hdshortvideo-mongodb version: '2' services: hdshortvideo-mongodb: image: mongo:3.6.3 environment: - MONGO_INITDB_ROOT_USERNAME=james - MONGO_INITDB_ROOT_PASSWORD=xxxx ports: - "27017:27017" volumes: - ~/volumes/HDShortVideo/mongodb/:/data/db/ 添加到ssh-agent中,确保您一直在eval $(ssh-agent)上运行。

然后将.bash_profile添加到您的ssh配置中:

AddKeysToAgent yes

第一次执行ssh时会提示您,但是密码短语会自动添加到touch ~/.ssh/config chmod 600 ~/.ssh/config echo "AddKeysToAgent yes" >> ~/.ssh/config 中,因此您无需再次输入密码即可结束会话并开始新的会话。

答案 2 :(得分:1)

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

安装keychain

sudo apt install keychain

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

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

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

感谢Birk Holland的this article