2011-05-31 96 views
65

當通過HTTP(S)連接到遠程存儲庫時,有沒有辦法讓git記住我的憑據?Git http - 安全地記住憑據

我試過core.askpass方法中詳述的git-config讓外部腳本提供我的憑據。雖然它的效果很好,但用戶名和密碼仍然以純文本形式存儲在小型shell腳本中。

+4

自2011年12月以來(git版本1.7.8),您可以使用所謂的**憑據助手**,請參閱我的答案:http://stackoverflow.com/a/12938677/46058 – 2012-10-17 16:14:41

+1

您現在可以使用加密的' netrc'文件!請參見[我的答案](http://stackoverflow.com/a/16164673/6309) – VonC 2013-04-23 08:38:19

回答

61

git通過HTTP運行時調用cURL。您可以通過在用戶的主目錄中設置.netrc文件並將其設置爲用戶專用(Linux中的0600)來存儲安全憑證。

該文件的內容爲每個遠程域提供用戶名和密碼。

machine myRemoteServer 
login myUserName 
password s3cret 

全服務器端的配置,它可以很容易地包括到您的LDAP服務器通話時看到https://stackoverflow.com/questions/3947530/git-push-fatal-failed/7177690#7177690

+2

這是更安全的,然後在命令中輸入密碼,因爲命令歷史文件是世界可讀的,而.netrc應該明確地隱藏起來,除了擁有的用戶以外的任何人..在linux/cygwin的bash_history文件的權限(-rw-r - r-- 1 myName域用戶8955 Aug 24 12:53 .bash_history) – Eddie 2011-08-24 19:35:39

+3

也是如此,因爲它可以防止密碼字符串在'ps -ax'的輸出中是世界可見的Git命令正在運行。 – 2012-01-06 00:28:20

+0

另請參閱[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

2

安全選項是使用普通的SSH與公鑰/私鑰對。

+1

@John,我正在downvoting:在Git客戶端和服務器之間,正確的,經過身份驗證的HTTPS傳輸與SSH一樣安全。在大型組織中,用戶訪問的集中式單帳戶配置/撤銷是一個非常常見的限制。 AFAIK,OpenSSH只能處理本地文件中的用戶pubkeys,而不能通過目錄查找(例如LDAP)。 – 2012-01-06 01:13:29

+2

@ RyanB.Lynch:僅供參考OpenSSH-LPK將公鑰存儲在LDAP中,但它被*修補* OpenSSH http://code.google。com/p/openssh -lpk/ – 2012-10-17 15:52:11

44

因爲(我認爲)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或更新使用證書幫手

+1

憑證緩存方法在Ubuntu 12.04下的Git 1.7.9.5中沒有問題。感謝指針。 – MKroehnert 2012-11-15 09:32:47

+3

謝謝 - 這爲我做了詭計: git config credential.helper store – 2012-12-19 19:34:02

13

由於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」。