2011-05-17 49 views

回答

179

更新April 2013, git 1.8.3

您現在可以使用加密的.netrc(與GPG)。
在Windows上:%HOME%/_netrc_,而不是 '.')

一個new read-only credential helper(在contrib/)與.netrc/.authinfo文件交互已添加。

該腳本將允許您使用GPG加密NETRC文件,避免其存儲在一個純文本文件的憑據的問題。

擴展名爲.gpg的文件在解析之前將被GPG解密。
多個-f參數都可以。它們按順序處理,找到的第一個匹配條目通過憑證助手協議返回。

當沒有-f選項,則.authinfo.gpg.netrc.gpg.authinfo.netrc文件在你的home目錄中的順序使用。

要啓用此憑據幫手:

git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2' 

(需要注意的是Git會在前面加上 「git-credential-」 的助手名和路徑尋找它 )

# and if you want lots of debugging info: 
git config credential.helper '$shortname -f AUTHFILE -d' 

#or to see the files opened and data found: 
git config credential.helper '$shortname -f AUTHFILE -v' 

查看「Is there a way to skip password typing when using https:// github」的完整示例


更新2012年末,隨着Git版本1.7.9+This answerMark Longair詳細介紹了credential cache mechanism它允許你儲存您的密碼以純文本,如下圖所示。


(原來的答覆)

您必須定義:

  • 環境變量%HOME%
  • _netrc文件%HOME%

如果您使用的是Windows 7

運行CMD 類型的:

setx HOME %USERPROFILE% 

和%HOME%將被設置爲 'C:\Users\"username"'

然後去它 並創建一個名爲 '_netrc'

文件

注意:對於Windows,您需要'_netrc'文件,而不是'.netrc'。

其內容是相當標準(與您的值替換):

machine <hostname1> 
login <login1> 
password <password1> 
machine <hostname2> 
login <login2> 
password <password2> 

Luke提到的評論:

在Windows 7上使用最新版本的msysgit,我不需要設置HOME環境變量。 _netrc文件本身就有竅門。

這確實是我在「Trying to 「install」 github, .ssh dir not there 」中提到:
git-cmd.bat列入msysgit並設置%HOME%環境變量:

@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH% 
@if not exist "%HOME%" @set HOME=%USERPROFILE% 

愛國者認爲在評論認爲「它似乎不會用於http協議「

但是,我回答說,netrc被curl使用,並且對http協議起作用,如sho在this example(在頁面中尋找'netrc'):。此處還使用http協議:「_netrc/.netrc alternative to cURL」。


與在Windows NETRC支持常見的陷阱是git會繞過如果原點HTTPS URL指定用戶名使用它。

例如,如果你的.git/config文件包含:

 
[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = https://[email protected]/p/my-project/ 

的Git將不通過_netrc解決您的憑據,來解決這個刪除您的用戶名,例如:

 
[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = https://code.google.com/p/my-project/ 
+0

好吧,就試試看感謝 – 2011-05-17 13:14:17

+0

@Bernd:。!了' HOME'環境變量很重要,因爲它在Windows上並未默認定義,您可以將該變量設置爲您想要的任何目錄(它不必是'C:\ users \ mylogin'):例如at工作,我將它設置到與我的Windows帳戶關聯的私人遠程磁盤,這使我可以切換桌面而不必丟失我的'.ssh'或'_netrc'設置。 – VonC 2011-05-17 13:16:18

+0

@Bernd:檢查您的Git倉庫是否在局域網或廣域網(互聯網)服務器,你可能需要在你的環境變量中定義一個'http.proxy',或者相反,將你的服務器添加到'no_proxy' varia可以避免嘗試通過WAN訪問局域網服務器。 – VonC 2011-05-17 13:19:45

34

您還可以安裝Git Credential Manager for Windows在Windows憑證管理器中保存Git密碼而不是netrc。這是存儲密碼

+8

偉大的答案,這是我發現的唯一答案,讓我保持簡單的用戶名/密碼(安全),而不必處理所有的SSH廢話。 – 2012-10-15 17:17:27

+0

@KirkWoll看到我上面的更新答案:您現在可以將您的憑據存儲在加密的'.netrc'文件中。在會議期間,您甚至不需要輸入一次憑證。 – VonC 2013-04-23 12:06:52

7

這將讓位於https git的認證使用的.netrc

  • 該文件應該被命名爲_netrc,位於c:\Users\<username>
  • 您需要設置一個環境變量更安全的方式調用HOME=%USERPROFILE%(使用系統選項在控制面板中設置系統範圍的環境變量,根據Windows的版本,您可能需要選擇「高級選項」)
  • 存儲在_netrc文件中的密碼不能包含空格ting密碼將不起作用)
+0

最簡單,最好的解決方案。像Android Studio,Source Tree和Git命令行一樣工作。當Google推薦Cloud SDK credential.helper選項失敗時,必須使用此功能,並且必須手動生成證書並使用net rc文件。就我而言,我並不需要選項2和3。 – Hari 2016-12-20 02:14:04

1

發表一個方法使用_netrc從網站www.course.com.tw下載材料我希望有一些可以幫助你。

如果有人打算使用coursera-dl在www.coursera.com上下載公開課的資料。而在Windows操作系統有人想使用一個文件,如「.netrc中」,這是一樣的Unix操作系統添加的選項,而不是-U -P以convenience.He -n可以這樣做:

  1. 檢查Windows操作系統上的主路徑:setx HOME %USERPROFILE%refer: VonC 's answer)。它將將HOME保存爲C:\Users\"username"

  2. 找到目錄C:\Users\"username"並創建一個文件名_netrc注意:沒有任何後綴。 內容是這樣的:machine coursera-dl login <user> password <pass>

  3. coursera-dl -n --path PATH <course name>使用命令下載類材料。 this page的更多課程選項詳細信息。

相關問題