当通过HTTP(S)连接到远程存储库时,有没有办法让git记住我的凭据?Git http - 安全地记住凭据
我试过core.askpass
方法中详述的git-config
让外部脚本提供我的凭据。虽然它的效果很好,但用户名和密码仍然以纯文本形式存储在小型shell脚本中。
当通过HTTP(S)连接到远程存储库时,有没有办法让git记住我的凭据?Git http - 安全地记住凭据
我试过core.askpass
方法中详述的git-config
让外部脚本提供我的凭据。虽然它的效果很好,但用户名和密码仍然以纯文本形式存储在小型shell脚本中。
git
通过HTTP运行时调用cURL。您可以通过在用户的主目录中设置.netrc
文件并将其设置为用户专用(Linux中的0600)来存储安全凭证。
该文件的内容为每个远程域提供用户名和密码。
machine myRemoteServer
login myUserName
password s3cret
全服务器端的配置,它可以很容易地包括到您的LDAP服务器通话时看到https://stackoverflow.com/questions/3947530/git-push-fatal-failed/7177690#7177690。
这是更安全的,然后在命令中输入密码,因为命令历史文件是世界可读的,而.netrc应该明确地隐藏起来,除了拥有的用户以外的任何人..在linux/cygwin的bash_history文件的权限(-rw-r - r-- 1 myName域用户8955 Aug 24 12:53 .bash_history) – Eddie 2011-08-24 19:35:39
也是如此,因为它可以防止密码字符串在'ps -ax'的输出中是世界可见的Git命令正在运行。 – 2012-01-06 00:28:20
另请参阅[Git - 如何在Windows上使用.netrc文件以保存用户和密码](http://stackoverflow.com/questions/6031214/git-how-to-use-netrc-file-on-windows-to -save-user-and-password) – 2012-06-01 08:48:19
安全选项是使用普通的SSH与公钥/私钥对。
@John,我正在downvoting:在Git客户端和服务器之间,正确的,经过身份验证的HTTPS传输与SSH一样安全。在大型组织中,用户访问的集中式单帐户配置/撤销是一个非常常见的限制。 AFAIK,OpenSSH只能处理本地文件中的用户pubkeys,而不能通过目录查找(例如LDAP)。 – 2012-01-06 01:13:29
@ RyanB.Lynch:仅供参考OpenSSH-LPK将公钥存储在LDAP中,但它被*修补* OpenSSH http://code.google。com/p/openssh -lpk/ – 2012-10-17 15:52:11
因为(我认为)Git版本1.7.8,从2 2011年12月1),git的支持所谓的凭据助手:
看到gitcredentials(7)手册页
(该手册页还描述了适合于此的core.askpass
)。
默认的git安装包括两个帮手:
缓存:详见git-credential-cache(1)。
将内存中的凭证缓存一段时间。存储的凭证永远不会触及磁盘,并在可配置的超时后被遗忘。
店面:详情请见git-credential-store(1)。
将凭据无限期地存储在磁盘上。该文件将设置其文件系统权限,以防止系统上的其他用户读取它,但不会被加密或以其他方式受到保护。同样的安全性.netrc
解决方案Eddie response
有在KDEWallet(KDE)中存储的用户名和密码,在GNOME Keyring一些第三方证书帮手,在Windows Credential Store,在MacOS X的钥匙扣等
脚注:
1)的Set Up Git GitHub的帮助页提到
你需要的git 1.7.10或更新使用证书帮手
凭证缓存方法在Ubuntu 12.04下的Git 1.7.9.5中没有问题。感谢指针。 – MKroehnert 2012-11-15 09:32:47
谢谢 - 这为我做了诡计: git config credential.helper store – 2012-12-19 19:34:02
由于git 1.8.3(5月,2013年),现在你可以指定一个加密.netrc
的git的使用方法:
一个new read-only credential helper(在
contrib/credential/netrc/
)与.netrc/.authinfo
文件交互已添加。
该脚本将允许您使用GPG加密NETRC文件,避免其存储在一个纯文本文件的凭据的问题。
-f|--file AUTHFILE
specify netrc-style files.
文件与
.gpg
扩展将通过GPG解析之前被解密。
多个-f
参数都可以。它们按顺序处理,找到的第一个匹配条目通过凭证助手协议返回(见下文)。当没有
-f
选项,则.authinfo.gpg
,.netrc.gpg
,.authinfo
和.netrc
文件在你的home目录中的顺序使用。要启用此凭据帮手:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(需要注意的是Git会在前面加上 “
git-credential-
” 的助手名和路径寻找它 )
查看完整的分步示例 at:
“Is there a way to skip password typing when using https://github.com
”。
自2011年12月以来(git版本1.7.8),您可以使用所谓的**凭据助手**,请参阅我的答案:http://stackoverflow.com/a/12938677/46058 – 2012-10-17 16:14:41
您现在可以使用加密的' netrc'文件!请参见[我的答案](http://stackoverflow.com/a/16164673/6309) – VonC 2013-04-23 08:38:19