Git - Kullanıcı ve parolayı kaydetmek için Windows'ta .netrc dosyası nasıl kullanılır


172

Git'i HTTP ve kullanıcı şifresi ile uzak bir havuzu klonlamak için kullanırken Windows'ta bir .netrc dosyası kullanmak mümkün müdür?

Yanıtlar:


203

.netrcWindows'da dosya kullanmak mümkün mü ?

Evet: Yapmanız gerekenler:

  • ortam değişkenini tanımla %HOME%(Git 2.0 öncesi, Git 2.0+ ile artık gerekmez)
  • içine _netrcdosya koy%HOME%

Windows 7/10 kullanıyorsanız bir CMDoturumda şunu yazın:

setx HOME %USERPROFILE%

ve %HOME%' C:\Users\"username"' olarak ayarlanacaktır .
Bu klasöre ( cd %HOME%) gidin ve ' _netrc' adında bir dosya oluşturun

Not: Yine, Windows için, bir ' _netrc' dosyasına değil, bir ' .netrc' dosyasına ihtiyacınız vardır.

İçeriği oldukça standarttır ( <examples>değerini değerlerinizle değiştirin ):

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

Luke yorumlarda şöyle diyor:

Windows 7'de msysgit'in en son sürümünü kullanarak HOMEortam değişkenini ayarlamam gerekmiyordu . Sadece _netrcdosya hile yaptı.

Bu benim "sözü de buydu çalışılıyor‘ install’github, .sshorada dir :"
git-cmd.batkümesini nasıl msysgit dahil %HOME%ortam değişkeni:

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

爱国者 "http protokolü için işe yaramayacak gibi görünüyor" yorumlarına inanıyor

Ancak, bu örnekte gösterildiği gibi HTTP protokolü netrctarafından kullanılan curlve bu protokol için çalışan cevap verdi ( netrcsayfada ' ' arayın ):. Ayrıca burada HTTP protokolü ile kullanılır: " _netrc/ .netrcalternatificURL ".


netrcWindows destekli ortak bir tuzak, bir başlangıç ​​https url'si bir kullanıcı adı belirtirse git'in onu atlamasıdır.

Örneğin, .git/configdosyanız şunları içeriyorsa:

[uzak "başlangıç ​​noktası"]
     fetch = + refs / heads / *: refs / uzaktan kumandalar / orijin / *
     url = https: //bob@code.google.com/p/my-project/

Git, _netrckullanıcı adınızı kaldırmak için şu şekilde kimlik bilgilerinizi çözmez :

[uzak "başlangıç ​​noktası"]
     fetch = + refs / heads / *: refs / uzaktan kumandalar / orijin / *
     url = https://code.google.com/p/my-project/

Alternatif çözüm: With git sürümü 1.7.9+ (Ocak 2012): Bu cevap den Mark Longair ayrıntıları kimlik bilgisi önbellek mekanizmasını da sen izin verir değil aşağıda gösterildiği gibi düz metin olarak şifrenizi saklayın.


İle Git 1.8.3 (Nisan 2013):

Artık şifreli bir .netrc (ile gpg) kullanabilirsiniz.
Windows'ta: %HOME%/_netrc( _' .' değil )

Bir yeni salt okunur kimlik yardımcı (içinde contrib/etkileşimde bulunmak için) .netrc/.authinfodosyaları eklenmiştir.

Bu komut dosyası , kimlik bilgilerinizin düz metin dosyasında depolanması sorununu önleyerek gpg şifreli netrc dosyalarını kullanmanıza izin verir .

Uzantıya sahip dosyaların .gpgayrıştırılmadan önce GPG tarafından şifresi çözülür.
Birden çok -fargüman uygun. Sırayla işlenirler ve bulunan ilk eşleşen girdi kimlik bilgileri yardımcı protokolü aracılığıyla döndürülür.

Hiçbir zaman -fseçeneği belirtilmişse, .authinfo.gpg, .netrc.gpg, .authinfo, ve .netrcana dizininizde dosyalar bu sırada kullanılır.

Bu kimlik bilgisi yardımcısını etkinleştirmek için:

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

(Git'in git-credential-yardımcı adın başına " " başlayacağını ve yoldan arayacağını unutmayı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'

" Kullanırken şifre yazmayı atlamanın bir yolu var mı?https:// github "


Git 2.18+ (Haziran 2018) ile artık şifrelenmiş .netrcdosyanın şifresini çözmek için kullanılan GPG programını özelleştirebilirsiniz .

Bkz 786ef50 işlemek , f07eeed taahhüt tarafından (12 May 2018) ( ``) Luis Marsano .
(Göre Birleştirilmiş - Junio Cı Hamano gitster- içinde 017b7c5 tamamlama 2018, 30 Mayıs)

git-credential-netrc: gpgseçeneği kabul et

git-credential-netrcgpggpg.program seçeneğinden bağımsız olarak ' ' ile şifresini çözmek zorlaştı.
Bu, Debian gibi modern GnuPG'yi başka bir şey olarak adlandıran dağıtımlarda bir sorundur ' gpg2'


@Bernd: HOMEWindows'ta varsayılan olarak tanımlanmadığı için ortam değişkeni önemlidir. Bu değişkeni istediğiniz dizine ayarlayabilirsiniz (olması gerekmez C:\users\mylogin): örneğin, işte, Windows hesabımla ilişkili özel uzak diskime ayarladım, bu da masaüstlerini kaybetmeden değiştirebilmeme izin veriyor benim .sshveya _netrcayarlar.
VonC

@Bernd: Git deponuzun LAN veya WAN (internet) sunucusunda olup olmadığını da kontrol edin. http.proxyOrtam değişkenlerinizde bir tanımlamanız gerekebilir . Aksine, sunucunuzu bir no_proxydeğişkene eklemek, WAN üzerinden bir LAN sunucusuna erişmeye çalışmaktan kaçınmak için.
VonC 17:11

Çevresel değişkenin adı ve değeri nedir? Biraz daha spesifik olabilir misiniz VonC
Dennis D

@DennisD: Cevapta ve yorumlarda bahsettiğim iki ortam değişkeni HOME ve http_proxy. HOME, istediğiniz dizine başvuracaktır. http_proxy, varsa proxy adresine başvuracaktır.
VonC

msysgitWindows 7'de en son sürümünü kullanarak HOMEortam değişkenini ayarlamam gerekmiyordu . Sadece _netrcdosya hile yaptı.
Luke

35

Git şifrelerini Windows kimlik bilgileri yöneticisine kaydetmek yerine Windows için Git Kimlik Bilgisi Yöneticisi'ni de yükleyebilirsiniz _netrc. Bu, şifreleri saklamanın daha güvenli bir yoludur.


8
Harika yanıt, bu, tüm bu SSH bokuyla uğraşmak zorunda kalmadan kullanıcı adı / parolanın basitliğini (güvenli bir şekilde) korumamı sağlayan tek cevap.
Kirk Woll

@KirkWoll güncelleme cevabımı yukarıda görüyorum: Artık kimlik bilgilerinizi şifrelenmiş bir .netrcdosyada saklayabilirsiniz . Bu kimlik bilgilerini oturum sırasında bir kez bile girmeniz gerekmez.
VonC

11

Bu Git'in HTTPS'de kimlik doğrulamasını yapmasına izin verir .netrc:

  • Dosya adlandırılmalı _netrcve içinde bulunmalıdır c:\Users\<username>.
  • Adlı bir ortam değişkeni ayarlamanız gerekir HOME=%USERPROFILE%(kontrol panelindeki Sistem seçeneğini kullanarak sistem genelindeki ortam değişkenlerini ayarlayın. Windows sürümüne bağlı olarak, "Gelişmiş Seçenekler" i seçmeniz gerekebilir.).
  • _netrcDosyada saklanan parola boşluk içeremez (parolanın girilmesi işe yaramaz).

En basit ve en iyi çözüm. Android Studio, Source Tree ve Git komut satırı ile cazibe gibi çalıştı. Google, Cloud SDK credential.helper seçeneği başarısız olduğunda ve manuel olarak kimlik bilgileri oluşturup net rc dosyasıyla kullanmak zorunda kaldığında bunu kullanmak zorunda kaldım. Benim durumumda 2. ve 3. seçeneklere ihtiyacım yoktu.
Hari

1

_netrcWww.course.com sitesinden materyal indirmek için kullanmanın bir yolunu gönderiyorum.

Birisi www.coursera.com adresindeki açık sınıf materyalleri indirmek için coursera-dl'yi kullanacaksa ve Windows işletim sisteminde birisi, ".netrc" gibi, Unix OS'de bulunan bir dosyayı seçeneği -nyerine -U <username> -P <password>kolaylık. Bunu şu şekilde yapabilir:

  1. Windows işletim sisteminde ev yolunu kontrol edin: setx HOME %USERPROFILE%( VonC'nin cevabına bakın ). HOMEOrtam değişkenini olarak kaydedecektir C:\Users\"username".

  2. Dizinde bulun C:\Users\"username"ve bir dosya adı oluşturun _netrc. NOT: herhangi bir sonek DEĞİLDİR. içerik şöyle:machine coursera-dl login <user> password <pass>

  3. coursera-dl -n --path PATH <course name>Sınıf materyallerini indirmek için bir komut kullanın . Bu sayfa için diğer coursera-dl seçenekleri ayrıntıları .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.