如何使git在Windows上不提示输入ssh密钥的密码?


Answers:


56

您可以在git bash中运行它:

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

它会在第二个命令中要求输入密码,仅此而已。您将需要执行的每个其他操作(一旦需要输入密码)将不会要求您输入密码(请参见下面的屏幕截图中的示例):

在Windows上的git bash中添加密码短语


7
我必须再次输入,一旦我关闭git bash ...有永久解决方案吗?
黑色

@Black是每个bash会话,我已经把它放进去了,.bashrc所以每次我打开git bash时,我都会得到提示,对于这个会话,我已经准备好了。
jcubic

您确切输入.bashrc是什么?.bashrc在哪里?
黑色

编辑:没关系,您必须在其中创建文件yourselv,~/.bashrc然后将帖子中的各行输入其中并保存,就这样:) thx!
黑色

.bashrc我将使用脚本并将其放置在.bash_profile或中,而不是使用上面的行(尤其是在中).profile是我主要内容的摘要.bash_profile,它应该为仍在寻找答案的任何人解决;这类似于下面的答案。在脚本的顶部,我加载了my .bashrc,如果不适用,则将其忽略。注意:您将需要更改对id_rsa您命名为私有SSH密钥的任何内容的引用,甚至可能更改路径。
Rockin4Life33

9

一种更好的永久解决方案是在Windows上打开git bash时自动启动ssh-agent。您可以将以下内容复制/粘贴到.profile或.bashrc中。我更喜欢将它放在.profile上

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

此解决方案来自此github帮助文章


我将简单的代码放入.bashrc,您的解决方案有何不同?在Windows bash上,每个外壳程序都是独立的,因此在运行外壳程序时永远不会运行代理。
jcubic

通过将代码放入,解决方案可以很好地工作.bashrc。仅在第一次提示ssh密码。保护我的生命。谢谢。
Ben Asmussen

谢谢,这非常挽救了我的生命。
gumuruh

这确实应该是公认的答案,因为它提供了一个持久的解决方案,可以更好地满足我认为OP的要求。
理查德D

如果我在启动时不小心输入了错误的密码怎么办?编辑:基于superuser.com/a/271673/647110,您可以ssh-add -D删除所有密钥。
尼尔斯·吉勒敏

1

我不确定是否要推荐它,但是在创建密钥并要求设置密码时,只需按Enter键并跳过密码即可。

看看此链接以了解如何使用ssh-keygenhttps : //help.github.com/articles/working-with-ssh-key-passphrases/

也许ssh-agent可以以某种方式帮助您。但不确定不知道您当前的系统。


4
绝对不是一个好的答案
Kennet Celeste

这是在Windows 10上解决该问题的唯一方法。按照“生成新的SSH密钥并将其添加到ssh-agent” github指南中的所有步骤进行操作之后,它总是向我询问密码。即使添加了它。这种行为破坏了我的Maven部署流程,因为在mvn release:perform阶段它试图在不提供密码的情况下签出release标签。因此,仅清除密码短语即可解决此问题。
Fernando Miguel Carvalho

-3

在回购位置“ ssh-keygen -p ”中输入此git命令,然后将提示您输入密钥文件位置,旧密码和新密码(可保留为空白,以免使用密码)。不要使用新密码输入任何内容,它会删除密码


1
留下空白密码是不安全的,由于限制,许多公司开发人员将无法使用空白密码。这是一个me脚的解决方法,而不是OP问题的解决方案。
cbaldan

脚,但仅限本地使用,Tasty and expeditious™
Jim P
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.