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
/ clone
iş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
: gpg
seçeneği kabul et
git-credential-netrc
gpg
gpg.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.exe
dağıtımında bir var, ancak tam bir GPG yüklemesi gpg-agent.exe
kullanmak, GPG anahtarınızla ilişkili parolanızı ezberleyecek bir a içerir .)
gpg4Win Lite
Minimum 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 -d
Neler 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.gpg
dosyanı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ı .netrc
kutunun 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-netrc
kodlanmış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.
.perl
Komut dosyasına şablon olarak göstermek ve oluşturulan sürümü yok saymak için bir önek ekleyin .
Artırmak Makefile
oluşturduğu, böylece git-credential-netrc
gelen git-credential-netrc.perl
sadece 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-netrc
git 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-netrc
artı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, pass
yapı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"