Có thể sử dụng tệp .netrc trên Windows khi tôi đang sử dụng Git để sao chép kho lưu trữ từ xa bằng HTTP và mật khẩu người dùng?
Có thể sử dụng tệp .netrc trên Windows khi tôi đang sử dụng Git để sao chép kho lưu trữ từ xa bằng HTTP và mật khẩu người dùng?
Câu trả lời:
Có thể sử dụng một
.netrc
tập tin trên Windows?
Có: Bạn phải:
%HOME%
(trước Git 2.0, không còn cần thiết với Git 2.0+)_netrc
tập tin vào%HOME%
Nếu bạn đang sử dụng Windows 7/10, trong một CMD
phiên, hãy nhập:
setx HOME %USERPROFILE%
và %HOME%
sẽ được đặt thành ' C:\Users\"username"
'.
Chuyển đến thư mục đó ( cd %HOME%
) và tạo một tệp có tên ' _netrc
'
Lưu ý: Một lần nữa, dành cho Windows, bạn cần có một ' _netrc
' tập tin, không một ' .netrc
' tập tin.
Nội dung của nó khá chuẩn (Thay thế <examples>
bằng các giá trị của bạn):
machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>
Luke đề cập trong các ý kiến:
Sử dụng phiên bản mới nhất của msysgit trên Windows 7, tôi không cần đặt
HOME
biến môi trường. Các_netrc
tập tin một mình đã lừa.
Đây thực sự là những gì tôi đã đề cập trong phần " Cố gắng install
gặt hái, .ssh
không có ở đó ": được
git-cmd.bat
bao gồm trong msysgit không đặt %HOME%
biến môi trường:
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%
Tin vào các ý kiến rằng "có vẻ như nó sẽ không hoạt động cho giao thức http"
Tuy nhiên, tôi đã trả lời netrc
được sử dụng bởi curl
và hoạt động cho giao thức HTTP, như trong ví dụ này (tìm ' netrc
' trong trang) :. Cũng được sử dụng với giao thức HTTP tại đây: " _netrc
/ .netrc
thay thế chocURL
".
Một cái bẫy phổ biến với netrc
sự hỗ trợ trên Windows là git sẽ bỏ qua việc sử dụng nó nếu url https gốc chỉ định tên người dùng.
Ví dụ: nếu .git/config
tệp của bạn chứa:
[từ xa "nguồn gốc"] tìm nạp = + refs / Heads / *: refs / điều khiển từ xa / origin / * url = https: //bob@code.google.com/p/my-project/
Git sẽ không giải quyết thông tin đăng nhập của bạn thông qua _netrc
, để khắc phục điều này xóa tên người dùng của bạn, như vậy:
[từ xa "nguồn gốc"] tìm nạp = + refs / Heads / *: refs / điều khiển từ xa / origin / * url = https://code.google.com.vn/p/my-project/
Giải pháp thay thế: Với phiên bản git 1.7.9+ (January 2012): Câu trả lời này từ Đánh dấu Longair chi tiết cơ chế bộ nhớ cache chứng chỉ mà cũng cho phép bạn không lưu trữ mật khẩu của bạn trong văn bản đơn giản như hình dưới đây.
Với Git 1.8.3 (tháng 4 năm 2013):
Bây giờ bạn có thể sử dụng .netrc được mã hóa (có gpg
).
Trên Windows: %HOME%/_netrc
( _
, không phải ' .
')
Một trình trợ giúp thông tin chỉ đọc mới (in
contrib/
) để tương tác với các.netrc/.authinfo
tệp đã được thêm vào.
Tập lệnh đó sẽ cho phép bạn sử dụng các tệp netrc được mã hóa gpg , tránh vấn đề lưu thông tin đăng nhập của bạn trong một tệp văn bản thuần túy.
Các tệp có
.gpg
phần mở rộng sẽ được GPG giải mã trước khi phân tích cú pháp.
Nhiều-f
đối số là OK. Chúng được xử lý theo thứ tự và mục nhập phù hợp đầu tiên được tìm thấy được trả về thông qua giao thức trợ giúp thông tin xác thực.Khi không có
-f
tùy chọn được đưa ra,.authinfo.gpg
,.netrc.gpg
,.authinfo
, và.netrc
các file trong thư mục chính của bạn được sử dụng theo thứ tự này.
Để kích hoạt trình trợ giúp thông tin này:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(Lưu ý rằng Git sẽ thêm "
git-credential-
" vào tên người trợ giúp và tìm kiếm nó trong đường dẫn.)
# 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'
Xem ví dụ đầy đủ tại " Có cách nào để bỏ qua việc nhập mật khẩu khi sử dụnghttps:// github
"
Với Git 2.18+ (tháng 6 năm 2018), giờ đây bạn có thể tùy chỉnh chương trình GPG được sử dụng để giải mã .netrc
tệp được mã hóa .
Xem cam kết 786ef50 , cam kết đã được nhận (12 tháng 5 năm 2018) bởi Luis Marsano (``) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết 017b7c5 , ngày 30 tháng 5 năm 2018)
git-credential-netrc
: chấp nhậngpg
tùy chọn
git-credential-netrc
đã được mã hóa cứng để giải mã với 'gpg
' bất kể tùy chọn gpg.program.
Đây là một vấn đề trên các bản phân phối như Debian gọi GnuPG hiện đại một cái gì đó khác, như 'gpg2
'
http.proxy
trong các biến môi trường của bạn. Hoặc ngược lại, để thêm máy chủ của bạn vào một no_proxy
biến, để tránh cố gắng truy cập máy chủ LAN qua mạng LAN.
msysgit
trên Windows 7, tôi không cần đặt HOME
biến môi trường. Các _netrc
tập tin một mình đã lừa.
Bạn cũng có thể cài đặt Trình quản lý thông tin Git cho Windows để lưu mật khẩu Git trong trình quản lý thông tin đăng nhập Windows thay vì _netrc
. Đây là một cách an toàn hơn để lưu trữ mật khẩu.
.netrc
tệp được mã hóa . Bạn sẽ không phải nhập những thông tin đó dù chỉ một lần trong suốt phiên.
Điều này sẽ cho phép Git xác thực trên HTTPS bằng cách sử dụng .netrc
:
_netrc
và nằm trong c:\Users\<username>
.HOME=%USERPROFILE%
(đặt biến môi trường toàn hệ thống bằng tùy chọn Hệ thống trong bảng điều khiển. Tùy thuộc vào phiên bản Windows, bạn có thể cần chọn "Tùy chọn nâng cao".)._netrc
tệp không thể chứa dấu cách (trích dẫn mật khẩu sẽ không hoạt động).Tôi đang đăng một cách sử dụng _netrc
để tải tài liệu từ trang web www.c thuyết.com.
Nếu ai đó sẽ sử dụng coursera-dl để tải xuống các tài liệu lớp mở trên www.coursera.com và trên HĐH Windows, ai đó muốn sử dụng một tệp như ".netrc" trong HĐH Unix để thêm tùy chọn -n
thay vì -U <username> -P <password>
cho thuận tiện. Anh ấy / cô ấy có thể làm điều đó như thế này:
Kiểm tra đường dẫn về nhà trên HĐH Windows: setx HOME %USERPROFILE%
(tham khảo câu trả lời của VonC ). Nó sẽ lưu HOME
biến môi trường như C:\Users\"username"
.
Xác định vị trí vào thư mục C:\Users\"username"
và tạo một tên tập tin _netrc
. LƯU Ý: KHÔNG có bất kỳ hậu tố.
nội dung giống như:machine coursera-dl login <user> password <pass>
Sử dụng một lệnh như coursera-dl -n --path PATH <course name>
để tải về các tài liệu lớp. Thêm chi tiết tùy chọn coursera-dl cho trang này .
HOME
biến môi trường rất quan trọng, vì nó không được xác định theo mặc định trên Windows. Bạn có thể đặt biến đó thành bất kỳ thư mục nào bạn muốn (không cần phải như vậyC:\users\mylogin
): ví dụ: tại nơi làm việc, tôi đặt nó vào đĩa từ xa riêng được liên kết với tài khoản Windows của tôi, cho phép tôi chuyển đổi máy tính để bàn mà không phải mất của tôi.ssh
hoặc_netrc
cài đặt.