Soru GitHub'da https: // kullanırken parola yazmayı atlamanın bir yolu var mı?


Kısa bir süre önce depolarımı GitHub'da https: // (güvenlik duvarı sorunları nedeniyle) ile senkronize etmeye geçtim ve her seferinde bir şifre soruyor. Eskiden benim SSH Sertifika ve yeterliydi. Benim durumumda şifreyi atlamanın bir yolu var mı (http / https kullanarak)?


1623
2018-03-17 17:47


Menşei


Ayrıca bakınız superuser.com/questions/199507/... - Colonel Panic
Artık şifrelemek için bir kimlik bilgisi yardımcısı kullanabilirsiniz. _netrc Kimlik bilgilerinizi içeren dosya. Görmek cevabım aşağıda. Bunu daha güvenli buldum git-credential-winstore.exe (bellek önbellek), Windows'da biraz buggy. - VonC
Ayrıca bakınız Git push kullanıcı adı ve şifre gerektirir ve Git bana şifre sormaya devam ediyor.
git-credential-winstore Windows için en iyi çalıştı. Buggy ne? Birkaç kez yapmış olsam da, ssh kurulumunun yapılması tercih edilen bir seçenektir, birden fazla ana bilgisayara bağlanmanız gerektiğinde daha düzensizdir ve bazen sadece düz çalışmaz. - Bron Davies
"SSH sertifikası" ile "SSH özel anahtarı" anlamına geldiğinizi farz ediyorum. - Michael Mior


Cevaplar:


Git sürümü 1.7.9 ve üstü ile

Git 1.7.9'dan (Ocak 2012'de piyasaya sürüldüğünden) beri, her zaman şifrenizi HTTP / HTTPS için yazmak zorunda kalmamak için Git'te düzgün bir mekanizma var. kimlik yardımcıları. (Sayesinde dazonic Bu yeni özelliği aşağıdaki yorumlarda belirtmek için.)

Git 1.7.9 veya üstü ile, aşağıdaki kimlik yardımcılarından birini kullanabilirsiniz:

git config --global credential.helper cache

... bu da Git'e, parolanızı (öntanımlı olarak) 15 dakika süreyle bellekte saklı tutmasını söyler. Daha uzun bir zaman aşımı ile şunları yapabilirsiniz:

git config --global credential.helper "cache --timeout=3600"

(Bu örnekte önerilmiştir. Linux için GitHub yardım sayfası.) İstediğiniz takdirde kimlik bilgilerinizi kalıcı olarak da saklayabilirsiniz, aşağıdaki diğer cevaplara bakın.

GitHub'un yardımı ayrıca önerir Mac OS X'te çalışıyor ve kullanılıyorsa ev yapımı içki Git'i kurmak için, yerel Mac OS X anahtar deposunu aşağıdakilerle birlikte kullanabilirsiniz:

git config --global credential.helper osxkeychain

Windows için, bir yardımcısı var Windows için Git Kimlik Yöneticisi veya msysgit içinde wincred.

git config --global credential.helper wincred # obsolete

İle Windows 2.7.3+ için Git (Mart 2016):

git config --global credential.helper manager

Linux için şunları yapabilirsiniz: kullanım gnome-keyring(veya KWallet gibi diğer anahtarlık uygulaması).

1.7.9'dan önceki Git sürümleriyle

Git'in 1.7.9'dan önceki sürümlerinde, bu daha güvenli seçenek kullanılamaz ve URL’nizi değiştirmeniz gerekir. origin uzaktan bu parola dahil etmek için kullanır:

https://you:password@github.com/you/example.git

... başka bir deyişle :password kullanıcı adından sonra ve önce @.

İçin yeni bir URL ayarlayabilirsiniz origin uzaktan kumanda ile:

git config remote.origin.url https://you:password@github.com/you/example.git

Kullandığınızdan emin olun https ve eğer bunu yaparsanız, GitHub şifrenizin düz metin içinde saklanacağını bilmelisiniz. .git Belli ki istenmeyen olan dizin.

Herhangi bir Git sürümü ile (iyi, sürüm 0.99'dan beri)

Alternatif bir yaklaşım, kullanıcı adınızı ve şifrenizi ~/.netrc dosya, şifreyi uzak URL'de tutmakla birlikte, parolanızın diskte düz metin olarak saklanacağı ve dolayısıyla daha az güvenli ve tavsiye edilmediği anlamına gelir. Ancak, bu yaklaşımı almak istiyorsanız, aşağıdaki satırı ekleyin. ~/.netrc:

machine <hostname> login <username> password <password>

... değiştiriliyor <hostname> sunucunun ana makine adı ve <username> ve <password> kullanıcı adınız ve şifreniz ile. Ayrıca, bu dosyadaki kısıtlayıcı dosya sistemi izinlerini ayarlamayı da unutmayın:

chmod 600 ~/.netrc

Windows'da bu dosyanın çağrılması gerektiğini unutmayın. _netrcve% HOME% ortam değişkenini tanımlamanız gerekebilir - daha fazla ayrıntı için bkz:


2136
2018-03-17 17:54



Parolanızı düz metin olarak saklamayın. Git 1.7.9'dan itibaren kimlik bilgilerini kullanabilirsiniz. git config --global credential.helper osxkeychain OS X'de. Diğer işletim sistemi için bkz. help.github.com/articles/set-up-git - dazonic
FWIW, osx anahtarlık malzemesi temel GIT kaynak kodunun bir parçasıdır, Brew veya MacPorts'un özel bir bileşeni değildir veya ayın tadı ne olursa olsun. Ve sıfırdan gitmeye bile gerek yok - sadece cd katkıda / kimlik bilgisi / osxkeychain / ve make run. - synthesizerpatel
İki faktörlü kimlik doğrulama ile, github'un ne aradığını kullanmanız gerekir. Kişi Erişim Jetonu. Aslında her zaman bir şifre kullanmalısınız, çünkü bir şifrenin aksine, hangi erişime izin verdiğinizi kontrol edebilirsiniz. Sadece URL’deki şifreyi değiştirin. https://username:PERSONAL_ACCESS_TOKEN@github.com/username/project.git. Kullanılacak kadar güvenli diskte saklanan düz metin şifrelerini kullanır. - Russell Stuart
git config --global credential.helper cache pencereler üzerinde çalışmıyor: stackoverflow.com/questions/11693074/... kullanım gitcredentialstore Windows'da mutlu ol - Sebastian J.
Bu zaman aşımını sonsuzluğa ayarlamak için herhangi bir yol var mı? - sudo


Ayrıca Git'i aşağıdakileri kullanarak kimlik bilgilerinizi kalıcı olarak saklayabilirsiniz:

git config credential.helper store

Not: Bu uygun olsa da, Git kimlik bilgilerinizi açık metinde saklar. Proje dizininizin altındaki yerel bir dosya (.git-credentials) ("ev" dizini için aşağıya bakın). Beğenmezseniz, bu dosyayı silin ve önbellek seçeneği.

Git'in ihtiyaç duyduğu her an kimlik bilgilerinizi istemeye devam etmesini isterseniz uzak depoya bağlanın, bu komutu çalıştırabilirsiniz:

git config --unset credential.helper

İçindeki şifreleri saklamak için .git-credentials senin içinde %HOME% proje dizininin aksine dizin: kullan --global bayrak

git config --global credential.helper store

639
2017-09-03 01:14



Windows'ta, bir yardımcı programın GIT parolanızın şifrelenmiş bir sürümünü Windows Creditial Store'da saklamak üzere bir şeyi yapılandırdığını indirebilirsiniz. confluence.atlassian.com/display/STASH/... - Contango
--Global belirtmem gerektiğini veya mevcut depodaki ayarları depolamayı denediğimi buldum: git config --global credential.helper store - Brian Gordon
Önbellek neden sürekli saklanmak yerine? Bilgisayarları paylaşıyor musun? - Michael J. Calkins
@BrianGordon Windows üzerinde GIT 1.9.5 kullanıyorum ve --global bayrak gereksizdi. Bu bayrak olmasa bile, kimlik bilgileri dosyası %USER_HOME% dizin. - jFrenetic
Düz metinde saklamıyorsa, neyle korunur? Şifreniz? Git'e bağlandığınızda yönetici şifreniz sormak zorunda değil mi? Başka bir parola biraz garip almak için parola girmek zorunda değil mi? - Cruncher


TLDR; Bir Git 1.8.3+ ile şifrelenmiş netrc dosyası.

Git deposu HTTPS URL'si için bir parola kaydedilmesi, bir ~/.netrc (Unix) veya %HOME%/_netrc (not _) Windows'ta.

Fakat: Bu dosya şifrenizi düz metinde saklardı.

Çözüm: Bu dosyayı şifrele GPG (GNU Gizlilik Görevlisi)ve her bir şifre gerektiğinde Git'in şifresini çöz push/pull/fetch/clone operasyon).


Not: Git 2.18 (Q2 2018) ile, artık şifrelenmiş şifreyi çözmek için kullanılan GPG'yi özelleştirebilirsiniz. .netrc dosya.

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

git-credential-netrc: kabul etmek gpg seçenek

git-credential-netrc şifresini çözmek için kodlanmıştıgpg' gözetilmeksizin   gpg.program seçeneği.
  Bu, modern GnuPG'ye başka bir şey diyen Debian gibi dağılımlarda bir problem. 'gpg2'


Windows için adım adım talimatlar

Windows ile:

(Git bir gpg.exe dağıtımında, ancak tam bir GPG kurulumunu kullanarak bir gpg-agent.exeGPG anahtarınızla ilişkili parolanızı ezberleyecektir.)

  • kurmak gpg4Win Lite, minimum gnupg komut satırı arayüzü en yeni gpg4win-vanilla-2.X.Y-betaZZ.exe) ve PATH'yi GPG kurulum dizini ile tamamlayın:

    set PATH=%PATH%:C:\path\to\gpg
    copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe
    

('Not alıncopy'command: Git komutu çalıştırmak için bir Bash betiğine ihtiyaç duyacak'gpg'. Dan beri gpg4win-vanilla-2 ile birlikte geliyor gpg2.exe, çoğaltmanız gerekiyor.)

  • GPG anahtarı oluşturun veya içe aktarın ve ona güvenin:

    gpgp --import aKey
    # or
    gpg --gen-key
    

(Bu tuşa bir şifre yazdığınızdan emin olun.)

  • Bu güvene güven

  • Kimlik bilgisi yardım komut dosyasını, dizininizdeki 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
    

(Evet, bu bir Bash betiğidir, ancak Go tarafından çağrılacağı için Windows üzerinde çalışacaktır.)

  • Net metinde bir _netrc dosyası oluşturun

    machine a_server.corp.com
    login a_login
    password a_password
    protocol https
    
    machine a_server2.corp.com
    login a_login2
    password a_password2
    protocol https
    

('Unutma'protocol' Bölüm: 'http'veya'https'kullanacağınız URL’ye bağlı olarak.'

  • Bu dosyayı şifrele:

    gpg -e -r a_recipient _netrc
    

(Şimdi yapabilirsiniz silmek  _netrc dosya, sadece tutmak _netrc.gpg şifrelenmiş bir.)

  • Şifrelenmiş dosyayı kullan:

    git config --local credential.helper "netrc -f C:/path/to/_netrc.gpg -v"
    

('Not alın/': C:\path\to... hiç işe yaramaz.) (İlk başta kullanabilirsiniz -v -d neler olduğunu görmek için.)

Bundan böyle, kimlik doğrulaması gerektiren bir HTTP (S) URL'sini kullanan herhangi bir Git komutu, bunun şifresini çözecektir. _netrc.gpgİletişim kurduğunuz sunucuyla ilişkili giriş / şifreyi kullanın ve kullanın. İlk kez, GPG, dosyanın şifresini çözmek için GPG anahtarınızın parolasını sorar. Diğer zamanlarda, gpg-ajan otomatik olarak başlatıldı İlk GPG çağrısı sizin için bu parolayı sağlayacaktır.

Bu şekilde, ezberleyebilirsiniz birkaç Bir dosyadaki URL'ler / girişler / şifreler ve şifrelenmiş diskinizde saklanmasını sağlayın.
Bunu hatırlamanız gereken bir "önbellek" yardımcısından daha kolay. Burada, her bir uzaktan servisiniz için farklı bir parola hatırlatmanız ve (her oturumda bir kez) yazmanız gerekir; söz konusu parola bellekte önbelleğe alınabilir.


85
2017-08-21 15:48



linux ile aynı şeyi denemek .. git config --local credential.helper "netrc -f /home/me/.netrc.gpg -v -d" ..ve "git: 'credential-netrc' değil git komutu, bkz. 'git --help' " - sunny
@sunny Bu ne curl -o c:\prgs\bin\git-credential-netrc https://raw.github.com/git/git/master/contrib/credential/netrc/git-credential-netrciçin: kopyalamanız gerekiyor git-credential-netrc yolun herhangi bir yerinde ($PATH), gitmesinin yapılabilmesi için 'credential-netrc'. - VonC
Teşekkürler bunu kaçırdı. - sunny
Şey, _netrc benim için çalışmadı bir Windows 7 PC, ama .netrc için çalıştı youtube-dl ile --netrc argüman ona geçti. - Iulian Onofrei
En iyi çözüm, en üstünde olmalıdır. - Doug713705


Kullanıcı kimlik bilgilerini bir HTTPS URL'sinde depolamak için kolay, eski moda bir yol var:

https://user:password@github.com/...

İle URL'yi değiştirebilirsiniz git remote set-url <remote-repo> <URL>

Bu yaklaşımın bariz dezavantajı, şifreyi düz metinde saklamanız gerektiğidir. Hala kullanıcı adını girebilirsiniz (https://user@github.com/...) En azından size güçlükten kurtulacaktır.

SSH'ye geçmeyi veya GitHub istemci yazılımını kullanmayı tercih edebilirsiniz.


32
2018-01-06 16:43



Kullanıcı adı / şifrenin kodlanması gerekebilir, bkz. stackoverflow.com/a/34611311/3906760 - MrTux


Bir kimlik bilgisi deposu kullanın.

Git 2.11+ için OSX ve linux, git'in yerleşik kimlik deposunda kullan:

git config --global credential.helper libsecret

Msysgit 1.7.9+ için , Windows:

git config --global credential.helper wincred

OS X kullanımında Git 1.7.9+ için:

git config --global credential.helper osxkeychain

30
2017-09-09 03:57



Eminim ki bu yoldur, ama ne yazık ki bir hatayı alıyorum: git: 'credential-gnome-keyring' is not a git command. See 'git --help'. - codepleb
Teşekkürler, ama bir şekilde aynı hatayı alıyorum. Yanlış bir şey mi yapıyorum? Komutu yazarım ve hiçbir şey olmuyor. Basar basmaz, başarılı bir şekilde eklediğim kimlik bilgilerini sordum, ancak hatayı alıyorum, bunu yaptıktan sonra git komutunu değil. - codepleb
Libsecret Linux üzerinde çalışmaya başlamadan önce, şu adımları yapmanız gerekir: stackoverflow.com/a/40312117/775800 - Lavamantis
Başka bir şey - Github'da 2FA etkinleştirilmişse, şifreniz çalışmayacaktır. Ancak Github "Ayarlar" sayfanızda kişisel erişim belirteci oluşturabilir ve bu şifre sizin parolanız olarak çalışır. github.com/github/hub/issues/822 - Lavamantis
credential-libsecret 'git komutu değil - Siddharth


Sadece kullanabilirsiniz

git config credential.helper store

Bir dahaki sefere şifre ile girdiğinizde ya da çekeceğinizde Düz metin olarak .git-credentials (biraz güvensiz, ama sadece korumalı klasöre koy)

Ve işte bu sayfada belirtildiği gibi:

https://git-scm.com/docs/git-credential-store


30
2017-09-21 13:03



Windows 2.7.3 için Git için (Mart 2016): github.com/git-for-windows/git/releases?after=v2.8.4.windows.1, olurdu git config credential.helper manager yerine - VonC
OP'nin sorusunu benim görüşüme göre cevaplayan cevap budur. - Climax


Muhtemelen biraz yavaşlıyorum, ama ilk önce yardımcıyı indirmem gerektiğine dair hemen belli değildi! Adresinde credential.helper indirmeyi buldum Atlassian'ın Git depolarıyla kalıcı olarak doğrulanması, Umarım yardımcı olur.

Alıntı:

Git'i OSX'te kimlik bilgisi önbelleğe alma ile kullanmak istiyorsanız şu adımları izleyin:

İkili git-credential-osxkeychain dosyasını indirin.

İkilinin yürütülebilir olduğundan emin olmak için aşağıdaki komutu çalıştırın:

chmod a+x git-credential-osxkeychain

/ Usr / local / bin dizinine koyun.

Aşağıdaki komutu çalıştırın:

git config --global credential.helper osxkeychain

18
2017-10-05 05:31





Bir GNU / Linux kurulumunda, bir ~ / .netrc de oldukça iyi çalışır:

$ cat ~/.netrc
machine github.com login lot105 password howsyafather

Git'in hangi ağ kitaplıklarının kullanıldığına bağlı olabilir. HTTPS taşınması.


18
2017-12-05 13:28



Ayrıca emin olun chmod 0600 ~/.netrc. - poolie
Sadece burada bir bağlantı bırakmak istiyorum Ubuntu netrc manpage. Bunu başka bir kullanıcı için (/home/git/.netrc) oluşturmam gerekti, ardından sahipliğini o kullanıcıya değiştirdim. - zacharydl


URL’nin bir parçası olarak oturum açma bilgilerini eklemeniz yeterlidir:

git remote rm origin 
git remote add origin https://username:mypassword@github.com/path/to/repo.git

15
2017-07-03 07:13



kullanıcı adı bir e-posta ise çalışmıyor - Anirudh Goel
e-posta kimliğinizde% 40 ile kaçmak zorunda kalacaksınız - Tarun Gupta
E-posta kimliğinde '+' varsa ne olur? Aynı kaçmayı denedim ama itme 'repo bulunamadı' dedi - killjoy
+ yerine% 2B - Tarun Gupta
Gelecekte başvurmak için: url-encode-decode.com - dviljoen


Windows için kullanabilirsiniz Git Kimlik Yöneticisi (GCM) eklentisi. Şu anda Microsoft tarafından yapılmaktadır. Güzel olan şey, şifreyi Windows Credential Store'a, düz metin olarak değil, kaydetmesidir.

Üzerinde bir yükleyici var sayfa açar projenin. Bu ayrıca resmi sürümünü yükleyecektir git-için-pencere yerleşik yönetici bilgisi ile. Github (ve diğer sunucular) için 2 faktörlü kimlik doğrulamasına izin verir. Başlangıçta giriş yapmak için bir grafik arayüzü var.

Cygwin kullanıcıları (veya resmi olarak Windows'a gitmek için kullananlar) için manuel yüklemeyi tercih edebilirsiniz. ZIP paketini sayfa açar. Paketi ayıklayın ve sonra çalıştırın install.cmd. Bu sizin için yükleyecektir ~/bin Klasör. (Emin olun ~/bin dizin, PATH'nızdadır.) Daha sonra bu komutu kullanarak yapılandırın:

git config --global credential.helper manager

Git daha sonra koşacak git-credential-manager.exe herhangi bir sunucuya doğrulanırken.


12
2018-05-24 07:49



Hesabınıza giriş yapan herhangi birinin şifrenin düz metnine kolay erişimi vardır. Tek yapmaları gereken, kimlik bilgisi yöneticisine bir istek göndermek. printf "protocol=https\nhost=git.mycompany.com\n" | git credential-manager get (daha fazla detay burada). Her zaman kullanmalısın kişisel erişim belirteci bununla ve elbette GitHub hesabınızda 2FA'yı kullanın. - Curt J. Sampson