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
.netrctậ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+)_netrctập tin vào%HOME%Nếu bạn đang sử dụng Windows 7/10, trong một CMDphiê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
HOMEbiến môi trường. Các_netrctậ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 installgặt hái, .sshkhông có ở đó ": được
git-cmd.batbao 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 curlvà 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/ .netrcthay thế chocURL ".
Một cái bẫy phổ biến với netrcsự 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/configtệ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/.authinfotệ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ó
.gpgphầ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ó
-ftùy chọn được đưa ra,.authinfo.gpg,.netrc.gpg,.authinfo, và.netrccá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ã .netrctệ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ậngpgtù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.proxytrong 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_proxybiến, để tránh cố gắng truy cập máy chủ LAN qua mạng LAN.
msysgittrên Windows 7, tôi không cần đặt HOMEbiến môi trường. Các _netrctậ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.
.netrctệ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:
_netrcvà 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".)._netrctệ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 -nthay 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 HOMEbiế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 .
HOMEbiế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.sshhoặc_netrccài đặt.