Visual Studio Code her zaman git kimlik bilgilerini ister


218

Visual Studio Code'u kullanmaya başladım ve test projemi GitHub'a kaydetmeye çalışıyordum , ancak Visual Studio Code her zaman GitHub kimlik bilgilerimi istiyor .

PC GitHub Masaüstüme yükledim ve Git de zaten koştum:

 git config --global credential.helper wincred

ama yine de Visual Studio Code kimlik bilgilerini istiyor.

Herhangi bir yardım?

İşte kullanıcı profili folfer bulunan benim .gitconfig dosya:

    [filter "lfs"]
    clean = git-lfs clean %f
    smudge = git-lfs smudge %f
    required = true
[user]
    name = ddieppa
[user]
    email = fake@live.com
[credential]
    helper = wincred

Kimlik bilgilerini isteyen açılır pencereler:

resim açıklamasını buraya girin

GitHub kimlik bilgilerimi açılır pencereye giriyorum , ancak yine de Visual Studio Code'daki Git çıktı penceresinde bu hatayı alıyorum :

remote: Anonymous access to ddieppa/LineOfBizApp.git denied.
fatal: Authentication failed for 'https://github.com/ddieppa/LineOfBizApp.git/'

hangi GItHub URL'sini kullanıyorsunuz? HTTP veya GIT (SSH)? HTTP URL kullanıyorsanız, URL'ye kullanıcı ve şifreyi eklemeniz gerekir. GIT URL'sini kullanmanız ve genel SSH anahtarınızı kullanıcının SSH anahtarları listesine eklemeniz daha iyi olur
yorammi

@yorammi Git ile yeni çalışıyorum, bu yüzden Github Desktop ve Git'i yükledim ve Visual Studio Code kullanarak projemi kaydetmeye çalıştım, bu yüzden ne geçtiğimi bilmiyorum. Bunu nasıl bilebilirim?
ddieppa

@ddieppa GitHub Desktop, bir https bağlantısıyla iki faktörlü kimlik doğrulama ile çalışmanın bir yoluna sahiptir. Ancak, bu diğer araçları bozar. Yanıtın dediği gibi, şimdi başlangıç ​​URL'sini https'den ssh'ye değiştirmeniz gerekiyor.
Lex Li

Yanıtlar:


159

Son güncelleme: 05 Mart, 2019

98 upvotes sonra, ben açıklama ile gerçek bir cevap vermek gerektiğini düşünüyorum.

VS kodu neden şifre istiyor? VSCode otomatik getirme özelliğini çalıştırdığından, git sunucusunun kimliğinizi yetkilendirecek herhangi bir bilgisi yoktur. Şu durumlarda olur:

  • Git deponuzda httpsuzak URL var. Evet! Bu tür uzaktan kumanda kesinlikle size her seferinde soracaktır. Burada istisna yok! (Yetkilendirmeyi aşağıdaki çözüm olarak önbelleğe almak için geçici bir numara yapabilirsiniz, ancak bu önerilmez.)
  • Git deponuzun ssluzak URL'si var, ancak ssh genel anahtarınızı git sunucusuna kopyalamamışsınız. Kullanım ssh-keygenanahtarınızı oluşturabilir ve git sunucuya kopyalamak için. Bitti! Bu çözüm aynı zamanda terminalde bir daha parola yazmanıza da yardımcı olur. @Fnatical tarafından iyi bir talimat bakınız burada cevap için.

Bu cevabın sonundaki güncellenmiş kısım size hiç yardımcı olmuyor. (Bu aslında iş akışınızda durgunlaşır.) Sadece VSCode'da olanları durdurur ve bu olayları terminale taşır.

Bu kötü yanıt sizi uzun, çok uzun bir süredir etkilediyse özür dileriz.

-

orijinal cevap (kötü)

Çözümü VSCode belgesinde buldum :

İpucu: VS Kodu Git uzaktan kumandalarınızla her görüştüğünde kimlik bilgilerini istemekten kaçınmak için bir kimlik bilgisi yardımcısı ayarlamanız gerekir . Bunu yapmazsanız, aldığınız bilgi istemi sayısını azaltmak için ... menüsünde Otomatik Alım özelliğini devre dışı bırakmayı düşünebilirsiniz.

Bu nedenle, Git'in şifrenizi bir süre hafızaya kaydetmesi için kimlik bilgisi yardımcısını açın. Varsayılan olarak Git, şifrenizi 15 dakika boyunca önbelleğe alır.

Terminal'e aşağıdakileri girin:

git config --global credential.helper cache
# Set git to use the credential memory cache

Varsayılan şifre önbellek zaman aşımını değiştirmek için aşağıdakileri girin:

git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

GÜNCELLEME (Orijinal cevap işe yaramazsa)

VS Kodu yükledim ve yukarıda aynı yapılandırdım, ancak @ ddieppa'nın dediği gibi, Benim için de çalışmadı. Bu yüzden Kullanıcı Ayarında bir seçenek bulmaya çalıştım ve "git.autofetch" = true değerini gördüm, şimdi yanlış ayarladım! VS Kodu artık tekrar tekrar şifre girmek için gerekli değildir!

Menüde Dosya / Tercihler / Kullanıcı Ayarı'nı tıklayın ve bunları yazın:

Varsayılan ayarların üzerine yazmak için ayarlarınızı bu dosyaya yerleştirin

{
  "git.autofetch": false
}

2
Bunu denedim, ama benim için çalışmadı, bunu bile kullanıyorum: $ git config --global credential.helper wincred
ddieppa

Otomatik yakalama çözümü sürekli açılır pencere sorununu durdursa da, yine de her itme ve çekme işleminde kimlik bilgilerinin girilmesini gerektirir. Http / s özellikli bir PC kullanıyorsanız, aşağıdaki kimlik yöneticisi çözümü harika çalışıyor.
ruttopia

3
eylemi başlatmadıysanız, özellikle kimlik bilgileri isteyen şeyler ortaya çıkmamalıdır - bunun bir parodi değil güvenli olduğunu nasıl anlarsınız?
Anthony Johnston

7
Bu ayara dikkat edin, lütfen! Kimlik bilgilerinizi hiç hatırlamanıza yardımcı olmayı amaçlamaz. Git-getirmenize otomatik olarak yardımcı olmaktan bahsediyor. Lütfen bir göz atınBununla ilgili daha fazla bilgi için atlassian.com/git/tutorials/syncing#git-fetch adresine bakın. Kimlik bilgilerinizi saklama konusunda, komutu kullanın git config --global credential.helper cache. Göz at git-scm.com/book/gr/v2/Git-Tools-Credential-Storage fazla ayrıntı için.
minnettar

7
Otomatik getirmeyi kapatmanızı önermek, "beni yalnız bırak" seçeneği olarak iyi. Ama "Yazılımınız işe yaramıyorsa, kullanmayı bırakın." İnsanların farkı fark etmeleri önemlidir. Bu cevabın "GÜNCELLEME" kısmının bunun yerine "ÇALIŞMIYORSA" yazmasını ve sorunu gerçekten düzeltmeden sizi rahatsız etmeyi durdurabileceğinizi açıklamanızı öneririm. GÜNCELLEME'nin üstündeki cevabın bir kısmı aslında doğrudur (en azından benim için çalışan dokümantasyon bağlantısını takip ederek)
Don

67

Kimlik bilgilerinizi şu şekilde ayarlayabilmeniz gerekir:

git remote set-url origin https://<USERNAME>:<PASSWORD>@bitbucket.org/path/to/repo.git

Uzak URL'yi şu şekilde alabilirsiniz:

git config --get remote.origin.url


5
Eğer şifremde @ varsa o zaman url ne olacak?
Suvonkar

Bu gerçekten güzel bir yol. Yine de bir soru, bu kimlik bilgileri yerel dosya sisteminde nereye kaydedilir?
Teoman shipahi

1
.Git \ config dosyasında.
yohosuff

ayrıca şifrenizi yerel diske kaydetmek istemiyorsanız ve sorulmaya devam etmek istiyorsanız <PASSWORD> seçeneğinin isteğe bağlı olduğunu unutmayın.
Ben Barreth

Ayrıca, şifreniz için kullanmak üzere kişisel bir erişim belirteci de sağlayabilirsiniz; bu şekilde, muhtemelen düz metin olarak depolanmış gerçek hesap şifrenizi göstermezsiniz. Ayrıca, isterseniz veya sisteminizin kaybolduğunu veya güvenliğinin ihlal edildiğini düşünüyorsanız, hükümleri kolayca kaldırabilirsiniz.
CTS_AE

55

Bu benim için çalışıyor:
1. Kimlik bilgisi hepler depolamak için ayarlayın
$ git config --global credential.helper store
2. sonra istediğinizi doğrulayın:
$ git config --global credential.helper store

Buradan alıntılanan git bash kullanırken basit örnek (yalnızca geçerli repo için çalışır, --globaltüm depolar için kullanın )

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: < type your username >
Password: < type your password >

[birkaç gün sonra]
$ git push http://example.com/repo.git
[kimlik bilgileriniz otomatik olarak kullanılıyor]

VS Kodu için de çalışacaktır.

Daha ayrıntılı örnek ve gelişmiş kullanım burada .

Not: Kullanıcı Adı ve Parolalar şifrelenmez ve düz metin biçiminde saklanmaz, bu nedenle yalnızca kişisel bilgisayarınızda kullanın.


2
Neden bu önbellek benim için ubuntu 18.04 ve vs kodu üzerinde çalışmak istemiyordum hiçbir fikrim yok. storeyaptım.
D. Dan

1
çok güvenli değil. bunun yerine önbelleği kullanın. "kişisel" bilgisayarınız hacklenirse, git kimlik bilgileriniz de hacklenebilir ..
Hypersoft Systems

1
önbellek kimlik bilgilerini bellekte saklar, uzun vadeli bir çözüm değildir. Her zaman kullanıcı adı ve şifre girmeniz gerekmeyecek, ancak yine de oldukça sık girmeniz gerekecek.
Vaibhav Vishal

1
Bu cevabı en çok beğendim. VS Code kullanarak kodumu orijine (yani GitLab) her ittiğimde kullanıcı adı / şifre istenmesini istemiyorum
Sean McCarthy

Hala bu yöntemin güvensiz olduğunu savunuyorum. krediler, sistem ele geçirildiğinde kötüye kullanılabilecek olan ~ / .git-credentials dosyasında saklanır. Daha iyi bir değişiklik httpsiçin sshbir alternatif olarak kullanılması ssh anahtarları ve.
Mohith7548

21

Aşağıdaki adımlar şu işlemleri gerçekleştirmenize yardımcı olur:

  1. SSH anahtarları oluşturma (parola olmadan **)
  2. 1. adımda oluşturulan ortak anahtarı Git deponuza ekleyin
  3. Yukarıdaki adımların başarıyla tamamlandığını onaylayın
  4. İlk taahhüdünüzü yapın (kullanıcı adı / şifre girmenize gerek kalmadan)

** İşiniz özellikle hassassa, parola olmadan SSH anahtarları oluşturmak akıllıca değildir.

İşletim Sistemi - Fedora 28 | Editör - VS Kodu v1.23.0 | Veri Havuzu - Git

SSH anahtarları oluşturun:

  • ssh-keygen -t rsa -C "email@goeshere.com"
  • Anahtarın kaydedileceği dosyayı girin : Enter tuşuna basın
  • Parolayı girin : Enter'a basın
  • Aynı parolayı tekrar girin: Enter tuşuna basın

Yukarıdaki adımları tamamladıktan sonra, ortak anahtarınızın konumu terminal penceresinde gösterilir. Şu anda oturum açmış olan kullanıcı 'bob' ise, genel anahtarınızın konumu /home/bob/.ssh/id_rsa.pub olur

Ortak anahtarı GitHub'a kopyalayıp içe aktarın:

  • cat /home/bob/.ssh/id_rsa.pub

  • Terminal pencerenizde görüntülenen tüm ortak anahtarı panoya kopyalayın

  • Https://github.com adresine gidin ve oturum açın
  • Ekranın sağ üst köşesindeki kullanıcı simgesini tıklayın ve Ayarlar'ı seçin
  • SSH ve GPG tuşlarını tıklayın
  • Yeni SSH anahtarı'nı tıklayın
  • Bir başlık girin, panoya kopyalanan genel anahtarı ilk madde işareti noktasına yapıştırın ve SSH anahtarı ekle'yi tıklayın

Yukarıdaki adımları onaylayın:

  • ssh -T git@github.com

  • yes

  • Selam ! Başarıyla kimliğiniz doğrulandı, ancak GitHub kabuk erişimi sağlamıyor.

Bir kullanıcı adı / şifre girmek zorunda kalmadan ilk taahhüt / itme: -touch test.txt

  • git add test.txt

  • git commit- editörü açar, bir mesaj girin ve dosyayı kaydedin. Vi düzenleyicinizse, idosya açıldıktan sonra düğmesine basın, bir mesaj girin, esc tuşuna basın ve ardından :xdeğişiklikleri kaydetmek için girin .

  • git push

Karşılaşabileceğiniz tek hıçkırık, SSH'yi GitHub'a denemeye çalışırken. Bu bağlantı biraz yardım sağlayacaktır -

İyi avlar!


20

" Windows için Git Kimlik Bilgisi Yöneticisi " ni (ve kimlik bilgisi yöneticisini ayarlamak için aşağıdaki talimatları) yüklemeyi deneyin .

Git (örn. VS Kodu) kullanan bir uygulamada gerektiğinde, Visual Studio Team Services kimlik bilgisi girişi için gerekli iletişim kutusunu " sihirli bir şekilde " açar.


4
Keşke "Linux için Git Kimlik Bilgisi Yöneticisi" de olsaydı. Bekle, ssh-agentzaten koşuyorum . Ancak VS Code, Linux'ta bunu görmezden geliyor gibi görünüyor.
wigy

bu benim için en basit çözüm. ve harika çalışıyor! işaret ettiğin için teşekkürler
dapidmini

20

Tek yapmam gereken bu komutu çalıştırmaktı:

git config --global credential.helper wincred

Sonra iki kez şifre istendi.

Bir dahaki sefere bana şifre sormadan çalıştı.


2
Teşekkürler! Sorun çözüldü ve bu da !
Jeffrey Roosendaal

4
Ubuntu'da, storeyerine kullanın wincred.
Cees Timmerman

1
Bu benim için çalıştı! Örneğin git config --global credential.helper 'cache --timeout==1209600', varsayılan 15 dakika yerine 2 hafta sürmesini de sağlayabilirsiniz. Kaynak: help.github.com/en/github/using-git/…
Andrew

1
^ Bununla ilgili daha fazla bilgi için buraya bakın: git-scm.com/docs/gitcredentials git-scm.com/docs/git-credential-cache git-scm.com/docs/git-credential-store store bunu kalıcı olarak disk. Ayrıca, önceki yorumumda bir hata var: kullanma ==, kullanma =. Düzenlemek için çok geç.
Andrew

18

Http / https yerine ssh kullanın.

Sen git sunucunuza yükleyin ve url formu yerine, yerel makinenizde ayarlanmış ssh anahtarları gerekecektir http://etmek git://ve artık kullanım şifreleri gerekmez.

Eğer ssh kullanamıyorsanız, bunu config'inize ekleyin:

[credential "https://example.com"]
    username = me

belgeler burada .


Github'da ssh tuşunu kullanma


Sadece bu adımları takip edin ve ssh anahtarınızı hemen kuracaksınız:

  • Yeni bir ssh anahtarı oluşturun (veya zaten bir anahtarınız varsa bu adımı atlayın)
    ssh-keygen -t rsa -C "your@email"

  • Anahtarınızı home/.sshdizinde (veya Users/<your user>.sshpencerelerin altında) ayarladıktan sonra , açın ve içeriği kopyalayın


Github hesabına sh anahtarı nasıl eklenir?

  • Github hesabına giriş yap
  • Sağ üstteki çiftliğe tıklayın (Ayarlar)
    github hesabı ödemeleri
  • Tıkla SSH keys
    ssh anahtar bölümü
  • Tıkla Add ssh key
    Ssh anahtarı ekle
  • Anahtarınızı yapıştırın ve kaydedin

Ve hepiniz gitmeye hazırsınız :-)


4
Ayrıca, temel nedenin ne olduğunu da netleştirmelisiniz. Benim durumumda, iki faktörlü kimlik doğrulamayı etkinleştirdiğimden, SSH depolara bağlanmanın tek yoludur. Herhangi bir https bağlantısı böyle bir isteme yol açacaktır.
Lex Li

@codeWizard Tam olarak ne olduğunu hatırlamıyorum ama VS Kodu iyi çalışıyor, herhangi bir ekstra yapılandırma olmadan GitHub repo'ya bağlanmak demek, belki de sorun Github Desktop'tan sonra Git'i yüklememdi, bu mümkün olabilir mi?
ddieppa

VC kimlik bilgilerini dahili olarak saklayabilir ve yeniden yükledikten / yükselttikten sonra git yapılandırılmış olabilir. Ben bir VC kullanıcı değilim UNIX adam im böylece makinemde test edemez.
CodeWizard

3
@codeWizard VS Code açık kaynak ve çok platformlu, Windows, MacOS veya Linux üzerinde çalıştırabilir, ssh varyantı üzerinde çalışabilir ve ne aldığımı görebilirsiniz
ddieppa

1
Doküman bağlantısı kesildi.
Vishal

14

Genel olarak, yerleşik kimlik bilgisi depolama olanaklarını kullanabilirsiniz:

git config --global credential.helper store

Veya Windows kullanıyorsanız, kimlik bilgilerini kullanabilirsiniz:

git config --global credential.helper wincred

Veya MacOS'taysanız, kimlik bilgilerini kullanabilirsiniz:

git config --global credential.helper osxkeychain

İlk çözüm çoğu durumda en uygunudur.


6

Otomatik Git kimlik doğrulaması . V1.45 Sürüm Notlarından :

GitHub Depoları için GitHub kimlik doğrulaması

VS Code artık GitHub depolarına karşı otomatik GitHub kimlik doğrulamasına sahip. Artık sisteminizdeki herhangi bir kimlik bilgisi yöneticisini yapılandırmadan genel ve özel depoları klonlayabilir, çekebilir, bunlara aktarılabilir ve bu depolardan itebilirsiniz. Entegre Terminalde çağrılan Git komutları bile, örneğin git push, artık GitHub hesabınızla otomatik olarak doğrulanır.

GitHub kimlik doğrulamasını git.githubAuthenticationayar ile devre dışı bırakabilirsiniz . Ayrıca, git.terminalAuthentication ayar ile terminal kimlik doğrulama entegrasyonunu devre dışı bırakabilirsiniz .


Harika! Linux'ta bu iki ayarın devre dışı bırakılması (Ubuntu 18.04 + KDE Plazma) kimlik bilgilerinin işlenmesini giderir. Bu iki etkin askpass = /usr/bin/ksshaskpassbenim geçersiz kıldı .gitconfigve sonuç olarak her seferinde kullanıcı adı ve şifre sordum. Bu, muhtemelen daha fazla makinede 1.45 sürümünde rol aldıkça daha da yükselecektir.
Andrei Sinitson

4

Windows 10 için: Denetim Masası'na gidin / Kimlik Bilgisi Yöneticisi / Windows Kimlik Bilgisi -> Git bağlantısını tıklayın, -> Düzenle -> Yeni şifreye güncelleyin. Çalışmalı


2

Parola olmadan bir SSH anahtarı kullanın.

Belki bu bazıları için açıktır (benim için değildi). Kesinlikle bir parola istemeniz de sorunu çözmez, ancak bu Mac'teki durumumda iyi bir uzlaşma oldu.


2

Kısa bir süre böyle bir şeyle kavga ettikten sonra, özellikle GitHub ve BitBucket'te birden fazla hesabım olduğunda iyi bir çözüm bulduğumu düşünüyorum. Ancak VSCode için, sonuçta Git Bash terminalinden başlatma olarak sona erdi, böylece ortam değişkenlerini bash oturumundan devralmış ve hangi ssh-agent'a bakılacağını biliyordu.

Bu eski bir yazı olduğunu biliyorum ama yine de gerçekten gereken bilgileri almak için bir yer bulmak için mücadele etti. Artı, 2017'den beri ssh-agent, yalnızca bir repoya erişmeye çalıştığınızda bir parola isteme yeteneğine sahip oldu.

İlgilenen biri varsa bulgularımı buraya koydum :


1

Bu makalenin ardından :

Sadece GIT_SSH env'yi ayarlayabilirsiniz. var. Putty's plink.exe programına. (Ardından pageant.exe'yi bir yetkilendirme aracısı olarak kullanın)


1

Aşağıdaki adımları izleyerek sorunu çözün.

Yüklü olmayan yazılımlar Vscode ve git ve yeniden yüklendi. Git veri havuzu klon URL'si ssh'den https'ye değiştirildi.


1

Visual Studio Code benzer bir sorun vardı.

Uzak URL'yi https olarak değiştirerek çözdüm . (.git / config dosyasında)

[remote "origin"]
    url = https://user@server.com/plesk-git/project.git

ve ayrıca

git config --global credential.helper wincred

tekrar çekti, windows kimlik bilgileri penceresi çıktı, sorunlar çözüldü.


0

Benim için uzaktan repo'mı bir SSH anahtarıyla ayarlamıştım ama git HOMEDRIVE ortam değişkeni şirketimin etki alanı politikası nedeniyle otomatik olarak bir ağ paylaşımına ayarlandığı için onları bulamadı. code .Başlatmadan önce kabuğumdaki bu ortam değişkenini değiştirmek VSCode'un doğru ortam değişkenini devralmasına ve git çıkış penceresinde artık bağlantı hatalarını ihlal etmesine neden oldu.

Şimdi sadece HOMEDRIVE her zaman c:\users\marvhendizinin varsayılan konumu olan yerel dizinime işaret edecek şekilde etki alanı ilkesini nasıl geçersiz kılacağını bulmak zorundayım .ssh.


0

Aşağıdaki adımları uygulayarak bunu durdurmayı başardım.

  1. Git Desktop'ı kaldırın (Bunun gerekli olduğundan emin olun)
  2. Kimlik Bilgileri Yöneticisi'ni ve cd "C:\Program Files\Git\mingw64\libexec\git-core"ardındangit-credential-manager.exe uninstall
  3. Wincred kullanmak için kimlik bilgileri yardımcısını sıfırla git config --global credential.helper wincred
  4. Kullanıcı VS Kodu Bazı değişiklikleri itin ve kimlik bilgilerini yeniden girin.

NOT: Şifrem olarak Kişisel Erişim Jetonu kullanıyordum.


0

Benzer bir problemi basit bir şekilde çözdüm:

  1. CMD veya Terminale Git
  2. tip git pull origin master . 'Origin' yerine Uzak adınızı yazın
  3. Kimlik bilgilerini isteyecektir. Onu yaz.

Bu kadar. Sorunu çözdüm


0

Yukarıdaki ssh yapılandırma girişlerini eklemek dışında

eğer pencereler

Set-Service ssh-agent -StartupType Automatic 

powershell şimdi vs kodu sormamalısınız ...


0

Windows 10 için windows anahtar türü cred basın ve Denetim Masası'ndaki "Kimlik Bilgisi Yöneticisi" görmelisiniz ve ilgili önbelleğe alınmış kimlik bilgilerini açmak ve kaldırmak için tıklayın, sonra tekrar deneyin, doğru şifre içinde kullanıcı kimliği şifre anahtarını soracak ve iyi olacaksınız .

Ağ şifremi değiştirdiğimde benimle oldu


0

Genellikle dan git uzak url değiştirmek için bu basit komutu https için ssh

git remote set-url origin git@github.com:username/repo-name-here.git
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.