TLDR; Git 1.8.3+ ile şifreli bir netrc dosyası kullanın .
Git veri havuzu HTTPS URL'si için bir şifre kaydetmek bir ~/.netrc(Unix) veya %HOME%/_netrc(_ , Windows'ta .
Ancak : Bu dosya şifrenizi düz metin olarak saklar.
Çözüm : Bu dosyayı GPG (GNU Privacy Guard) ile şifreleyin ve Git'in her parola gerektirdiğinde şifresini çözmesini sağlayın ( push/ pull/ fetch/ cloneişlemi için).
Not: Git 2.18 (Q2 2018) ile artık şifrelenmiş şifreyi çözmek için kullanılan GPG'yi özelleştirebilirsiniz .netrc dosyanın .
Bakınız Luis 784ef50 , f07eeed (12 Mayıs 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'
Windows için Adım Adım talimatlar
Windows ile:
(Git gpg.exedağıtımında bir var, ancak tam bir GPG yüklemesi gpg-agent.exekullanmak, GPG anahtarınızla ilişkili parolanızı ezberleyecek bir a içerir .)
gpg4Win LiteMinimum gnupg komut satırı arabirimini yükleyin ( en songpg4win-vanilla-2.X.Y-betaZZ.exe sürümü alın ) ve PATH'nizi GPG kurulum diziniyle tamamlayın:
set PATH=%PATH%:C:\path\to\gpg
copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe
(' copy' Komutuna dikkat edin: Git'in komutu yürütmek için bir Bash betiğine ihtiyacı olacaktır gpg. ' ' gpg4win-vanilla-2İle birlikte gpg2.exe, bu yana , onu çoğaltmanız gerekir.)
(Bu tuşa bir parola koyduğunuzdan emin olun.)
O anahtara güven
Kimlik bilgisi yardımcı komut dosyasını aşağıdakiler içindeki bir dizine yükleyin %PATH%:
cd c:\a\fodler\in\your\path
curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc.perl
(Dikkat: komut dosyası Git 2.25.x / 2.26 olarak yeniden adlandırılmıştır, aşağıya bakın)
(Evet, bu bir Bash betiği, ancak Git tarafından çağrılacağı için Windows üzerinde çalışacak.)
( Kullanacağınız URL'ye bağlı olarak ' protocol' bölüm: ' http' veya ' https' öğesini unutmayın.)
(Artık yapabilirsiniz silmek_netrc sadece tutarak dosyayı _netrc.gpgşifreli bir.)
(' /': C:\path\to...Hiç işe yaramaz.) ( -v -dNeler olup bittiğini görmek için önce kullanabilirsiniz .)
Şu andan itibaren, kimlik doğrulama gerektiren bir HTTP (S) URL'si kullanan herhangi bir Git komutu bu _netrc.gpgdosyanın şifresini çözecek ve iletişim kurduğunuz sunucuyla ilişkili oturum açma / parolayı kullanacaktır. İlk kez GPG, dosyanın şifresini çözmek için GPG anahtarınızın parolasını soracaktır. Diğer zamanlarda, ilk GPG çağrısı tarafından otomatik olarak başlatılan gpg aracısı sizin için bu parolayı sağlayacaktır.
Bu şekilde, birkaç URL'yi / girişi / şifreyi tek bir dosyada ezberleyebilir ve diskinizde depolanmasını sağlayabilirsiniz.
Söz konusu şifrenin bellekte önbelleğe alınması için, uzak servislerinizin her biri için (oturum başına bir kez) farklı bir şifre hatırlamanız ve yazmanız gereken bir "önbellek" yardımcısından daha uygun buluyorum.
Git 2.26 (Q1 2020) ile, kullanım için örnek kimlik yardımcısı .netrckutunun dışında çalışacak şekilde güncellendi. Bkz. Yama / tartışma .
Bkz. Taahhüt 6579d93 , taahhüt 1c78c78 (20 Aralık 2019) Denton Liu ( Denton-L) .
(Göre Birleştirilmiş - Junio Cı Hamano gitster- içinde 1fd27f8 tamamlama 2019 25 Ara)
İmzalayan: Denton Liu
Perl tercümanı için shebang yolu zor git-credential-netrckodlanmıştı.
Ancak, bazı kullanıcılar bu dosyayı farklı bir konuma yerleştirmiş olabilir ve bu nedenle betiği manuel olarak düzenlemek zorunda kalır.
.perlKomut dosyasına şablon olarak göstermek ve oluşturulan sürümü yok saymak için bir önek ekleyin .
Artırmak Makefileoluşturduğu, böylece git-credential-netrcgelen git-credential-netrc.perlsadece diğer Perl komut gibi.
Makefile tarifleri utanmadan çalındı contrib/mw-to-git/Makefile.
Ve:
2.26 (Q1 2020) ile .netrc kullanmak için örnek kimlik yardımcısı kutunun dışında çalışacak şekilde güncelleştirildi.
Bkz. Taahhüt 6579d93 , taahhüt 1c78c78 (20 Aralık 2019) Denton Liu ( Denton-L) .
(Göre Birleştirilmiş - Junio Cı Hamano gitster- içinde 1fd27f8 tamamlama 2019 25 Ara)
İmzalayan: Denton Liu
Şu anda git-credential-netrcgit deposunun dışında çalışmaz. Aşağıdaki hatayla başarısız olur:
fatal: Not a git repository: . at /usr/share/perl5/Git.pm line 214.
Yine de bir havuzda olmanızın gerçek bir nedeni yoktur. Kimlik bilgisi yardımcıları, deponun dışında da iyi çalışabilmelidir.
Olmayan kendinden sürümünü Çağrı config()böylece git-credential-netrcartık ihtiyacı bir depo içinde çalıştırılmak üzere.
Jeff King ( peff) ekliyor:
Bir gpg şifreli kullandığınızı varsayıyorum netrc(eğer değilse, muhtemelen kullanmalısınız credential-store).
"Salt okunur" şifre erişimi için, passyapılandırma ile kombinasyonunu biraz daha güzel buluyorum :
[credential "https://github.com"]
username = peff
helper = "!f() { test $1 = get && echo password=`pass github/oauth`; }; f"