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ć
.netrc
pliku w systemie Windows?
Tak musisz:
%HOME%
(przed Git 2.0, nie jest już potrzebna z Git 2.0+)_netrc
plik%HOME%
Jeśli używasz systemu Windows 7/10, w CMD
sesji 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 _netrc
pliku „ ”, 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ć
HOME
zmiennej środowiskowej. Sam_netrc
plik załatwił sprawę.
To jest rzeczywiście to, o czym wspomniałem w " Próbowaniu" install
"github, .ssh
nie
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 netrc
jest używany przez curl
protokół 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
/ .netrc
alternatywa dlacURL
”.
Częstą pułapką z netrc
obsł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/config
plik 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/.authinfo
plikami.
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
.gpg
rozszerzeniem zostaną odszyfrowane przez GPG przed przetworzeniem.
Wiele-f
argumentó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
-f
podano opcję,.authinfo.gpg
,.netrc.gpg
,.authinfo
, oraz.netrc
pliki 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 .netrc
pliku.
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
: akceptacjagpg
opcji
git-credential-netrc
został 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.proxy
zmiennych środowiskowych. Lub wręcz przeciwnie, aby dodać serwer do no_proxy
zmiennej, aby uniknąć prób uzyskania dostępu do serwera LAN przez WAN.
msysgit
w systemie Windows 7, nie musiałem ustawiać HOME
zmiennej środowiskowej. Sam _netrc
plik 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ł.
.netrc
pliku. Nie będziesz musiał wprowadzać tych danych uwierzytelniających ani razu podczas sesji.
Pozwoli to Git na uwierzytelnianie przez HTTPS przy użyciu .netrc
:
_netrc
i 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”)._netrc
pliku nie może zawierać spacji (cytowanie hasła nie zadziała)._netrc
Zamieszczam 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 -n
zamiast -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 HOME
zmienną ś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 .
HOME
zmienna ś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.ssh
lub_netrc
ustawienia.