怎么让git不要求拉密码?

时间:2012-08-14 06:47:30

标签: linux git

我有以下设置:

带有git的服务器(centOS)和同一服务器上项目的存储库。

我需要做的是能够从存储库中取出而不会被要求输入密码(因为这很烦人)。

注意:当我拉动时,我以root身份登录。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:4)

根据您的要求,有几种选择,特别是您的安全需求。对于HTTP和SSH,都有无密码或密码要求的访问权限。

HTTP

==============

密码的

对于仅提取要求很有用,默认情况下禁用推送。如果匿名克隆是意图,那就完美了。你绝对不应该为这种类型的配置启用推送。 git-http-backend的手册页包含良好的信息,http://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html的在线副本。它提供了一个如何配置apache来提供此功能的示例。

.netrc中的用户/密码或嵌入的网址

.netrc文件在表单中使用的地方:

machine <hostname> login <username> password <password>

嵌入式网址将采用以下形式:

http://user:pass@hostname/repo

由于git不会为您执行身份验证,因此在将请求传递给git工具之前,您需要配置一个Web服务器(如apache)来执行身份验证。另请注意,即使您使用https,使用嵌入式方法也存在安全风险,因为它是所请求网址的一部分。

如果您希望能够提取非交互式,但阻止匿名用户访问git repo,这应该是一个使用apache进行基本身份验证的合理轻量级解决方案,最好使用.netrc文件来存储凭据。作为一个小问题,git将在使用身份验证后启用写访问,因此要么使用匿名http进行只读,要么如果要阻止非交互式用户具有写访问权限,则需要执行一些其他配置

请参阅:

  • httpd.apache.org/docs/2.4/mod/mod_auth_basic.html了解有关配置基本身份验证的更多信息
  • www.kernel.org/pub/software/scm/git/docs/git-http-backend.html,了解有关所需apache配置的一些示例。


SSH

==============

密码短语少

打开安全问题,因为任何能够获取ssh私钥的人现在都可以更新远程git repo作为此用户。如果你想以非交互方式使用它,我建议安装类似gitolite的东西,以便更容易确保那些带有ssh私钥的人只能从repo中提取,并且它需要一个不同的ssh密钥对来更新回购。

有关gitolite的更多信息,请参阅github.com/sitaramc/gitolite/。

stromberg.dnsalias.org/~strombrg/ssh-keys.html - 用于创建密码少的ssh密钥: 也可能想要管理多个ssh密钥:www.kelvinwong.ca/2011/03/30/multiple-ssh-private-keys-identityfile /

Passphase protected

可以使用ssh-agent在每个会话的基础上解锁,只对从git进行交互式提取非常有用。由于你提到root并且只​​谈论执行'git pull',听起来你的用例是非交互式的。这可能会更好地与gitolite结合使用(github.com/sitaramc/gitolite /)。

摘要

==============

使用像gitolite这样的东西会为SSH类型设置抽象很多配置,如果您认为可能有其他存储库或需要指定不同的访问级别,那么绝对建议使用。它的日志记录和审计也非常有用。

如果你只是想通过http来提取,那么git-http-backend手册页应该包含足够的信息来配置apache以满足需要。

你总是可以将匿名的http(s)用于克隆/拉取,以及完全访问所需的密码短语保护的ssh访问,在这种情况下,不需要设置gitolite,你只需要将ssh公钥添加到〜/ .ssh / authorized_keys文件。

答案 1 :(得分:2)

查看this question的答案。您应该使用SSH访问而不是HTTPS / GIT,并通过SSH公钥进行身份验证。这也应该在本地工作。

答案 2 :(得分:1)

如果你正在使用ssh访问,你应该运行ssh代理,在那里添加你的密钥并在repo端注册你的公共ssh密钥。然后,您的ssh密钥将自动使用。这是首选方式。

如果您使用的是https访问权限,则可以

使用这三种方法中的任何一种,都不应该要求输入密码。