Czy jest możliwe użycie pliku .netrc w systemie Windows, gdy używam Git do klonowania zdalnego repozytorium za pomocą protokołu HTTP i hasła użytkownika?
Czy jest możliwe użycie pliku .netrc w systemie Windows, gdy używam Git do klonowania zdalnego repozytorium za pomocą protokołu HTTP i hasła użytkownika?
Odpowiedzi:
Czy można użyć
.netrcpliku w systemie Windows?
Tak musisz:
%HOME%(przed Git 2.0, nie jest już potrzebna z Git 2.0+)_netrcplik%HOME%Jeśli używasz systemu Windows 7/10, w CMDsesji wpisz:
setx HOME %USERPROFILE%
a %HOME%testament zostanie ustawiony na „ C:\Users\"username"”.
Przejdź do tego folderu ( cd %HOME%) i utwórz plik o nazwie „ _netrc”
Uwaga: ponownie, w przypadku systemu Windows potrzebujesz _netrcpliku „ ”, a nie „ .netrc”.
Jego zawartość jest dość standardowa (zamień na <examples>swoje wartości):
machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>
Łukasz wspomina w komentarzach:
Korzystając z najnowszej wersji msysgit na Windows 7, nie musiałem ustawiać
HOMEzmiennej środowiskowej. Sam_netrcplik załatwił sprawę.
To jest rzeczywiście to, o czym wspomniałem w " Próbowaniu" install"github, .sshnie
git-cmd.bat ma katalogu ": zawarte w msysgit ustawia %HOME%zmienną środowiskową:
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%
爱国者 uważa w komentarzach, że „wygląda na to, że nie będzie działać dla protokołu http”
Odpowiedziałem jednak, że netrcjest używany przez curlprotokół HTTP i działa z nim, jak pokazano w tym przykładzie (poszukaj znaku „ netrc” na stronie):. Używany również z protokołem HTTP tutaj: „ _netrc/ .netrcalternatywa dlacURL ”.
Częstą pułapką z netrcobsługą w systemie Windows jest to, że git pominie jego użycie, jeśli adres URL pochodzenia https określa nazwę użytkownika.
Na przykład, jeśli twój .git/configplik zawiera:
[zdalne „źródło”]
fetch = + refs / heads / *: refs / remotes / origin / *
url = https: //bob@code.google.com/p/my-project/
Git nie rozwiąże twoich poświadczeń przez _netrc, aby naprawić ten problem, usuń twoją nazwę użytkownika, na przykład:
[zdalne „źródło”]
fetch = + refs / heads / *: refs / remotes / origin / *
url = https://code.google.com/p/my-project/
Alternatywne rozwiązanie: W przypadku git w wersji 1.7.9+ (styczeń 2012): Ta odpowiedź od Marka Longaira szczegółowo opisuje mechanizm pamięci podręcznej poświadczeń, który pozwala również nie przechowywać hasła w postaci zwykłego tekstu, jak pokazano poniżej.
Z Git 1.8.3 (kwiecień 2013):
Możesz teraz użyć zaszyfrowanego pliku .netrc (z gpg).
W systemie Windows: %HOME%/_netrc( _zamiast „ .”)
Dodano nowy pomocnik poświadczeń tylko do odczytu (in
contrib/) do interakcji z.netrc/.authinfoplikami.
Ten skrypt pozwoliłby ci na użycie plików netrc zaszyfrowanych gpg , unikając problemu z przechowywaniem twoich poświadczeń w zwykłym pliku tekstowym.
Pliki z
.gpgrozszerzeniem zostaną odszyfrowane przez GPG przed przetworzeniem.
Wiele-fargumentów jest OK. Są one przetwarzane w kolejności, a pierwszy znaleziony pasujący wpis jest zwracany za pośrednictwem protokołu pomocnika poświadczeń.Gdy nie
-fpodano opcję,.authinfo.gpg,.netrc.gpg,.authinfo, oraz.netrcpliki w katalogu domowym są wykorzystywane w tym celu.
Aby włączyć tego pomocnika poświadczeń:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(Zauważ, że Git doda znak „
git-credential-” do nazwy pomocnika i poszuka go w ścieżce).
# 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'
Zobacz pełny przykład w sekcji „ Czy istnieje sposób na pominięcie wpisywania hasła podczas używaniahttps:// github ”
Dzięki Git 2.18+ (czerwiec 2018) możesz teraz dostosować program GPG używany do odszyfrowania zaszyfrowanego .netrcpliku.
Zobacz commit 786ef50 , commit f07eeed (12 maja 2018) autorstwa Luisa Marsano (``) .
(Scalone przez Junio C Hamano - gitster- w zatwierdzeniu 017b7c5 , 30 maja 2018 r.)
git-credential-netrc: akceptacjagpgopcji
git-credential-netrczostał zakodowany na sztywno do odszyfrowania za pomocą „gpg” niezależnie od opcji gpg.program.
Jest to problem w dystrybucjach takich jak Debian, które nazywają nowoczesne GnuPG czymś innym, na przykład 'gpg2'
http.proxyzmiennych środowiskowych. Lub wręcz przeciwnie, aby dodać serwer do no_proxyzmiennej, aby uniknąć prób uzyskania dostępu do serwera LAN przez WAN.
msysgitw systemie Windows 7, nie musiałem ustawiać HOMEzmiennej środowiskowej. Sam _netrcplik załatwił sprawę.
Możesz także zainstalować Git Credential Manager dla Windows, aby zamiast tego zapisywać hasła Git w menedżerze poświadczeń systemu Windows _netrc. Jest to bezpieczniejszy sposób przechowywania haseł.
.netrcpliku. Nie będziesz musiał wprowadzać tych danych uwierzytelniających ani razu podczas sesji.
Pozwoli to Git na uwierzytelnianie przez HTTPS przy użyciu .netrc:
_netrci znajdować się w c:\Users\<username>.HOME=%USERPROFILE%(ustaw zmienne środowiskowe dla całego systemu za pomocą opcji System w panelu sterowania. W zależności od wersji systemu Windows może być konieczne wybranie opcji „Opcje zaawansowane”)._netrcpliku nie może zawierać spacji (cytowanie hasła nie zadziała)._netrcZamieszczam sposób wykorzystania do pobrania materiałów z serwisu www.course.com.
Jeśli ktoś ma zamiar użyć coursera-dl do pobrania materiałów klasy otwartej na www.coursera.com, aw systemie Windows ktoś chce użyć pliku takiego jak „.netrc”, który jest podobny do systemu Unix, aby dodać opcja -nzamiast -U <username> -P <password>dla wygody. Może to zrobić w ten sposób:
Sprawdź ścieżkę główną w systemie operacyjnym Windows: setx HOME %USERPROFILE%(patrz odpowiedź VonC ). Zapisuje HOMEzmienną środowiskową jako C:\Users\"username".
Zlokalizuj w katalogu C:\Users\"username"i utwórz nazwę pliku _netrc. UWAGA: NIE ma sufiksu.
zawartość jest następująca:machine coursera-dl login <user> password <pass>
Użyj polecenia takiego jak coursera-dl -n --path PATH <course name>pobranie materiałów do zajęć. Więcej szczegółów dotyczących opcji coursera-dl dla tej strony .
HOMEzmienna środowiskowa jest ważna, ponieważ nie jest zdefiniowana domyślnie w systemie Windows. Możesz ustawić tę zmienną na dowolny katalog, który chcesz (nie musiC:\users\mylogin): na przykład w pracy ustawiłem ją na mój prywatny dysk zdalny powiązany z moim kontem Windows, co pozwala mi przełączać pulpity bez konieczności utraty moje.sshlub_netrcustawienia.