如何在不重新输入SSH密码的情况下执行“ git pull”?


96

是否可以进行配置,git/ssh这样我每次执行一次输入时都不必输入密码git pull?请注意,该仓库是github上的一个私有仓库。

或者,从私有Github存储库中自动执行代码部署的最佳实践是什么?

其他详细信息: EC2实例运行基于Fedora的公共AMI。



您有解决这个问题的方法吗?
nim

从git 2.11+开始(2016年第四季度),使用libsecret是另一种方式:stackoverflow.com/a/40312117/8477066
Hielke Walinga

Answers:


69

看看这个链接https://help.github.com/articles/working-with-ssh-key-passphrases/

但是我不想每次使用密钥都输入长密码!

我也不!值得庆幸的是,有一个漂亮的小工具 ssh-agent可以安全地保存您的密码,因此您无需重新输入密码。如果您使用的是OSX Leopard或更高版本,则可以将密钥保存在系统的钥匙串中,从而使您的生活更加轻松。大多数Linux安装会在您登录时自动为您启动ssh-agent。


3
回答17.7k信誉的人时有些紧张;我是否误解了这个问题... ;-)
弗雷德里克·皮尔

3
紧张?放心:这里的大多数人都很有礼貌...而那些不是,那么,他们比我有更大的问题:)
jldupont 2011年

2
该链接有助于说明要运行哪些命令才能保存密码ssh-agentrabexc.org/posts/using-ssh-agent
Mateus Gondim

我不想使用键。很简单,我有user \ pass,我想将其保存在git客户端上
nim

为什么链接仅提供Mac / Widows选项?我想在不重新输入密码的情况下在unix服务器上进行git pull。设法使它适用于一个历史性项目,但无法告诉我我在那做了什么。指向SSH到远程UNIX机器时的关键是传递给密钥,而将其用作git pull(或专用作曲者vcs)密钥吗?我相信我对这里有些误解。任何帮助表示赞赏:)
trainoasis

29

我启用了密码缓存,如下所述:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

要将密码缓存一个月:

git config --global credential.helper 'cache --timeout=2628000'

谢谢,temuri-我一直在到处寻找这个确切的细节。它没有用,但是文档似乎没有提到它仅用于HTTPS。
Mike Emery 2015年

2
如果您为远程Git存储库的基于SSH的URL 使用密码(而不是带有密钥文件的口令),则根本无法保存密码。但是我注意到发出任何git命令后,您可以立即输入密码并按Enter。您无需等待密码提示出现。
ADTC 2015年

1
git仍然要求通过
nim,

12

试试这个:

git config credential.helper store

您必须输入一次密码,然后将其存储在root文件夹中。

正如评论所指出的那样,这不适用于SSH密码,仅适用于HTTPS密码。


1
@nim这并不意味着您应该否决答案,我已经建议了对我有用的方法,并且有人可能会觉得有用。
Yankee

没有保存密码。我尝试,没有结果。如果您像这样ssh:// name @ ip / path进行远程操作
nim,

1
如果您要存储HTTP基本身份验证密码,则此方法有效。
菲尔

4
这不适用于SSH密码,仅适用于HTTPS密码。
Eliezer Berlin

适用于https。您只需要输入即可。下一次应该是您最后一次输入解释。下一次,git应该会记住密码。
乔纳森

7

您的情况现在已经确定,但是对我来说,事实是我在 ~/.ssh/

要解决该问题,我必须创建一个名为的文件~/.ssh/config并添加以下行:

IdentityFile ~/.ssh/my_key2_rsa

~/.ssh/my_key2_rsa我的钥匙在哪里。


1
为此,我的id_rsaid_rsa.pub文件具有自定义名称,这就是git永远无法识别它的原因。参考:linux.die.net/man/5/ssh_config
lasec0203

5

我不知道为什么还没有人报告这个。但是最简单的方法是AddKeysToAgent yes在.ssh / config文件的顶部简单地添加一行。当然ssh-agent必须事先运行。如果它没有运行(通过ssh-agent终端上的命令检查),则只需运行它eval $(ssh-agent)

我可以确认这是可行的,因为在我的项目中有很多子模块,并且对于每个要克隆的子模块,我都必须输入ssh密码。经过以上技巧之后,我不再需要这样做了。

解决方案的来源是/ubuntu/362280/enter-ssh-passphrase-once/853578#853578


这绝对是正确的答案。此外,
要使
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.