如何使用git pull输入带有密码的命令?


138

我想在一行中执行以下命令:

git pull && [my passphrase]

怎么做?


您可以按照以下步骤将密码短语更改为空: help.github.com/articles/working-with-ssh-key-passphrases
jacerate 2012年

1
如果运行ssh代理,则可以避开键入密码短语的需要。第一次执行git pull时,您将以交互方式进行此操作,并且ssh代理会记住您的私钥,并且您可以在没有提示的情况下运行git pull。
Tim Finer

Answers:


160

这与您要求的不完全相同,而是针对http(s):

  • 您可以将密码放在.netrc文件中(在Windows上为_netrc)。从那里它将被自动拾取。它将进入具有600个权限的主文件夹。
  • 您也可以只克隆仓库,https://user:pass@domain/repo但这并不是真正推荐的做法,因为它会在很多地方显示用户/密码...
  • 一种新的选择是使用凭据帮助器。请注意,凭据将使用标准凭据帮助器以明文形式存储在本地配置中。Wincred的凭据帮助程序也可以在Windows上使用。

凭证助手的用法示例

  • git config credential.helper store -无限期存储凭证。
  • git config credential.helper 'cache --timeout=3600'-存放60分钟

对于基于ssh的访问,您将使用ssh代理,该代理将在需要时提供ssh密钥。这将需要在计算机上生成密钥,将公钥存储在远程服务器上,并将私钥添加到相关的密钥库中。


1
您能否详细说明SSH部分?我正在配置EC2实例,我希望它在不要求输入密码和AWS自动缩放的情况下拉出。这个公共/私有方案看起来是一个很好的解决方案。
Pedro Dusso 2015年

1
@PedroDusso喜欢的声音这个线程是你以后有什么
EIS

2
我最终使用了部署密钥机制,这似乎是一个很好的解决方案。谢谢!
Pedro Dusso 2015年

129

我找到了一种在命令行上为https连接提供凭据的方法。您只需要指定完整的URL即可进行git pull并在其中包含凭据:

git pull https://username:password@mygithost.com/my/repository

您不需要先使用凭据克隆存储库,这意味着您的凭据不会以结尾.git/config。(但是请确保您的shell不会出卖您,并将命令行存储在历史文件中。)


不需要密码,以这种方式写密码是不安全的
流星2015年

这不是我已经在2012年接受的答案中列出的内容之一吗?
eis 2015年

8
@eis:不完全是。关键是您不需要使用包含凭据的URL 克隆存储库,但仍可以使用凭据从URL中提取信息。结果是凭据不会以.git / config文件结尾。
holgero

5
如果您省略该:password部分,则在按Enter键后将提示您输入密码。这样,您的密码将不会保存在bash历史记录中。
马提亚斯·菲舍尔

1
是@PramodGarg使用-git pull 用户名:password@mygithost.com/my/repository.git分支
PAVITRA

38

不会直接回答问题,但是我在寻找一种方法时发现了这个问题,基本上,每次我在远程服务器上访问时,都不会重新输入密码

好吧,git允许您在有限的时间内缓存凭据。它是可自定义的,git config并且此页面对此进行了很好的解释:

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

在终端中,运行:

$ git config --global credential.helper cache
# Set git to use the credential memory cache

要自定义缓存超时,您可以执行以下操作:

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

然后,您的凭据将在内存中存储所需的时间。


5

请注意,Git 2.5+(2014年第二季度)改变了git凭证帮助器“存储” 存储未加密密码的方式
参见Junio C Hamanocommit 17c7f4d gitster

credential-xdg

调整store凭证帮助程序的示例后端,以在指定时遵循XDG配置文件的位置。

该文档现在说:

如果未指定:

  • 凭据将搜索从~/.git-credentials$XDG_CONFIG_HOME/git/credentials,和
  • ~/.git-credentials如果存在或不存在,则将写入凭据$XDG_CONFIG_HOME/git/credentials

0

如果我们没有@密码,则下面的cmd将起作用: git pull https://username:pass@word@mygithost.com/my/repository 如果您拥有@密码,则将其替换为%40,如下所示: git pull https://username:pass%40word@mygithost.com/my/repository

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.