我刚刚开始使用git,我不能让它记住我的密码,我使用cmd.exe提升,我的git主机是github,我已经创建了一个ssh密钥,就像github上的指南

但我还是得到了

*\subnus.mvc>git push origin master
Enter passphrase for key '/c/Users/Subnus/.ssh/id_rsa':

当前回答

你可以在你的用户的主目录下创建一个。bashrc文件,比如C:/Users/youruser,然后放在那里:

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

该脚本在每次bash运行后执行。因此,当git-bash启动时,您只需要输入一次密码!

某些版本的bash需要.bash_profile文件而不是.bashrc,所以以防万一克隆。bashrc:

copy .bashrc .bash_profile

其他回答

如果你在Windows下使用Git bash,你可以执行以下操作:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

它会在第二个命令中要求传递短语,就是这样。你需要做的每一个额外的操作(曾经需要pass phrase)都不会要求你提供pass phrase(参见下面的屏幕截图中的例子):

可以尝试添加-k arg当你这样做;

ssh-add -k ~/.ssh/id_rsa

确保你的~/。Ssh /config不包含

UseKeychain是的

防止ssh-add持久化到ssh-agent。

你可以在你的用户的主目录下创建一个。bashrc文件,比如C:/Users/youruser,然后放在那里:

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

该脚本在每次bash运行后执行。因此,当git-bash启动时,您只需要输入一次密码!

某些版本的bash需要.bash_profile文件而不是.bashrc,所以以防万一克隆。bashrc:

copy .bashrc .bash_profile

[编辑-误读问题,这是一个相关问题的答案。为后人留下改写的版本]

我的案例是,我试图推动一个托管在我们的服务器上的回购。每当我尝试做一个推,git会问我我的密码(nb -密码,不是我的私钥的密码短语)。

通过将我的公钥添加到服务器上的授权密钥,我能够获得无密码推送到该服务器。而且,因为我的私钥上没有密码(顺便说一句,这是糟糕的做法!)我根本不需要输入任何东西。

下面是向服务器添加公钥的命令。它假设用户git是服务器上的用户。

cat .ssh/id_rsa.pub | ssh git@GIT_MASTER_IP 'cat >> .ssh/authorized_keys'

您可以通过登录到服务器,并手动将公钥附加到~/.ssh/authorized_keys文件中来实现相同的功能