Git push kullanıcı adı ve şifre gerektirir


1435

GitHub hesabımdan bir Git deposunu bilgisayarıma klonladım.

Hem bilgisayarım hem de dizüstü bilgisayarımla çalışmak istiyorum, ancak bir GitHub hesabıyla çalışmak istiyorum.

Bilgisayarımı kullanarak GitHub'a aktarmaya veya çekmeye çalıştığımda, bir kullanıcı adı ve şifre gerektiriyor, ancak dizüstü bilgisayarı kullanırken değil!

Her etkileşim kurduğumda kullanıcı adımı ve şifremi yazmak istemiyorum  origin. Burada ne eksik?


1
Evet ama ne yapmalıyım? Keygen'i başka ne ürettim?
TooCooL

1
Pubkey'i Github hesabınıza ( github.com/account/ssh ) kaydetmeniz ve SSH istemcinizi doğru kullanıcı adını kullanacak şekilde yapılandırmanız gerekir.
jwodder

1
Bunların hepsini yaptım ama yine de kullanıcı adı ve şifre gerektiriyor! İki PC ile bir hesap kullanmak mümkün mü?
TooCooL

1
Bu soru, bu oldukça iyi olan tüm seçeneklerinizi kapsamaktadır: stackoverflow.com/questions/5343068/…
ford

2
Artık ssh'a geçmenize gerek yok. HTTPS ile de mümkündür. Cevabımı kontrol et.
Varun Achar

Yanıtlar:


1960

Yaygın bir neden, SSH yerine varsayılan (HTTPS) kullanılarak klonlamaktır. Bunu deponuza gidip "Klonla veya indir" i ve ardından URL alanının üstündeki "SSH Kullan" düğmesini tıklayıp başlangıç ​​menünüzün URL'sini şu şekilde güncelleyerek düzeltebilirsiniz:

git remote set-url origin git@github.com:username/repo.git

Bu GitHub'da belgelenmiştir: Uzak URL'leri HTTPS'den SSH'ye değiştirme .


61
Ve URL'yi değiştirmek için nasıl anlamaya, buraya git: stackoverflow.com/a/2432799/60488 (spoyler: git remote set-url origin git://new.url.here)
Johan Kool

136
Güvenlik kısıtlamaları için ssh'yi (benim gibi) kullanamazsanız şunları yapabilirsiniz: git remote set-url origin https://name:password@github.com/repo.git (buradaki bir yorumdan çıkarılmıştır)
Bruno Berisso

134
HTTPS ile klonlama neden yaygın bir hatadır? GitHub artık HTTPS kullanmanızı önerir.
Dennis

8
@smftre varsayılan olarak böyledir, ancak kimlik bilgilerinizi önbelleğe almak için bir yardımcı kullanabilirsiniz .
Dennis

28
Permission denied (publickey)Bu kılavuzu kullanmam düzeltildi : help.github.com/articles/generating-ssh-keys .
voltrevo

386

Git depolarıyla kalıcı kimlik doğrulama

Kimlik bilgileri önbelleğini etkinleştirmek için aşağıdaki komutu çalıştırın :

$ git config credential.helper store
$ git push https://github.com/owner/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

Ayrıca önbellek kullanım süresini de belirtmelisiniz ,

git config --global credential.helper 'cache --timeout 7200'

Kimlik bilgileri önbelleğini etkinleştirdikten sonra 7200 saniye (2 saat) önbelleğe alınır .


Ayrıca uzaktan url'nizi de değiştirmeniz gerekebilir. git remote set-url origin https://git@github.com/<owner>/<repo>.git Bu ayrıca 2FA ile çalışır
Bron Davies

14
Bu kabul edilen cevap olmalı. Soruyu tam olarak cevaplıyor.
Abraham TS

güvenlik amacıyla ubuntu dosyalarından 7200'den sonra otomatik olarak silinecek mi?
usama

veya 12 saat boyunca 43,200. Günde bir kez giriş yapıyorsunuz. Bu bazıları için daha makul olabilir.
Urasquirrel

Sadece denedim - var:fatal: protocol 'https' is not supported
Joel

134

Aynı problemle daha yeni karşılaştım ve bulduğum en basit çözüm HTTPS yerine SSH URL kullanmaktı:

ssh://git@github.com/username/repo.git

Ve bu değil:

https://github.com/username/repo.git

Artık ve yerine yalnızca SSH anahtarıyla doğrulayabilirsiniz .usernamepassword


1
Sorunu çözmenin en kolay yolu, uzak kaynak URL'sini düzenlemeniz yeterlidir. Bu kadar. Bitti. Thanx!
JOM

1
Bu benim için çalıştı ama önce bunu ele almam gerekiyordu: stackoverflow.com/questions/2643502/…
Sridhar Sarnobat


120

SSH'ye geçmenin yanı sıra, şifrenizi net metne koymak istemiyorsanız HTTPS'yi kullanmaya devam edebilirsiniz. Bunu kendinize koyun ~/.netrcve kullanıcı adınızı / şifrenizi istemez (en azından Linux ve Mac'te):

machine github.com
       login <user>
       password <password>

Ekleme (bkz. VonC'nin ikinci yorumu): Windows'ta dosya adı %HOME%\_netrc.

Şifrelemek istediğinizde VonC'nin ilk yorumunu da okuyun.

Git 1.7.10 veya daha yenisine sahipseniz kullanabileceğiniz başka bir ek (user137717'nin yorumuna bakın) .

Bir kimlik bilgisi yardımcısı kullanarak GitHub parolanızı Git'te önbelleğe alın :

GitHub depolarını HTTPS kullanarak klonluyorsanız Git'e, GitHub ile her konuştuğunda GitHub kullanıcı adınızı ve şifrenizi hatırlamasını söylemek için bir kimlik bilgisi yardımcısı kullanabilirsiniz.

Bu aynı zamanda Linux, Mac ve Windows üzerinde de çalışır.


3
Evet, Linux üzerinde çalışıyor, ancak Windows'ta gitbash için çalışmıyor.
Dielson Satışları

3
@dolmen Ne demek istediğini anlıyorum, ama şifrenizi açık bir metne koymayı düşünüyorsanız, bunu şifreleyebilirsiniz;) Bkz. stackoverflow.com/a/18362082/6309 . ve bu, Github'un 2 faktörlü kimlik doğrulaması (2FA) ile bile uyumludur: stackoverflow.com/a/18607931/6309
VonC 21:13

3
@Sales dosyanızı %HOME%\_netrc(yerine ~/.netrc) çağırmanız koşuluyla, DOS oturumundan veya Windows'ta git bash'tan mükemmel çalışır . Bu dosyayı şifrelemek için ayrıca stackoverflow.com/a/18362082/6309 adresine bakın .
VonC

1
Bu özellikle Linux üzerinden git kullanarak Linux'ta çok işe yarar.
Evan Hu

3
açık bir metne koymanız veya şifrelemeniz gerekmez. yardımcı yardımcı program sizin için önbelleğe alır ve ayarlanması 30 saniye sürer. help.github.com/articles/caching-your-github-password-in-git/…
user137717

86

Önceki cevaplarla karıştırılmamış olan girişimciler için şunları yapabilirsiniz:

git remote -v

Hangi gibi bir şeyle cevap verecek

origin    https://yourname@github.com/yourname/yourrepo.git (fetch)
origin    https://yourname@github.com/yourname/yourrepo.git (push)

Daha sonra birçok kişinin önerdiği komutu çalıştırabilirsiniz, ancak şimdi adınızı ve yanıtınızı yukarıdan biliyorsunuz, böylece yukarıdan kesip yapıştırabilirsiniz yourname/yourrepo.git:

git remote set-url origin git@github.com:yourname/yourrepo.git

1
Bunu denedim. Benden paraphraseher zaman istiyor . Bir tane
kurmadım

Ne yerine gidiyor yourrepo?
Raphi

2
@Raphi koş git remote -vve ne çıkıyor görmek
Davide

1
Diğer cevaplar bu tavsiyenin önüne geçmelidir.
Bennett Brown

57

Eğer SSH kullanıyor ve özel anahtar bir parola ile şifrelenmiş, o hala Git ile ağ işlemlerini yaparken özel anahtar için parola / şifre girmek istenir gibi push, pullve fetch.

Özel anahtar parolasını / parola kimlik bilgilerini kaydetmek için ssh-agent kullanın

Eğer parola her zaman girmek zorunda kalmamak için, kullanabilirsiniz ssh-agentben açıkladığımız terminal oturum başına bir kez özel anahtar parolası kimlik bilgilerini saklamak için cevabım kimlik doğrulama ajan bağlantı açılamadı :

$ eval `ssh-agent -s`
$ ssh-add

Windows msysgit Bash uygulamasının çıktısını değerlendirmeniz gerekir ssh-agent, ancak aynı şeyi diğer geliştirme ortamlarında ve işletim sistemlerinde yapmanız gerekip gerekmediğinden emin değilim.

ssh-addana .sshklasörünüzde id_rsavarsayılan ad olan özel bir anahtar arar , ancak farklı bir ada sahip bir anahtara dosya yolu iletebilirsiniz.

Ajanı öldürmek

Terminal oturumunuzu tamamladığınızda ssh-agent, kill bayrağını kapatabilirsiniz -k:

$ ssh-agent -k

ssh-agentKılavuzda açıklandığı gibi :

-k

Geçerli aracıyı öldür (SSH_AGENT_PID ortam değişkeni tarafından verilir).

İsteğe bağlı zaman aşımı

Ayrıca, aşağıdaki gibi isteğe bağlı bir zaman aşımı parametresi alabilir:

$ ssh-add -t <timeout>

nerede <timeout>biçimi olduğu <n>hiçin <n>saat <n>mboyunca <n>dakikada, vb.

ssh-agentEl kitabına göre :

-t life

Aracıya eklenen kimliklerin maksimum ömrü için varsayılan bir değer belirleyin. Ömür, saniye cinsinden veya sshd_config (5) 'te belirtilen saat biçiminde belirtilebilir . Ssh-add (1) ile bir kimlik için belirtilen bir ömür, bu değeri geçersiz kılar. Bu seçenek olmadan varsayılan maksimum kullanım ömrü sonsuza dek sürer.

Daha fazla zaman biçimi için bu sayfaya bakın .

Cygwin kullanıcıları için güvenlik uyarısı

Cygwin kullanıcıları, Cygwin'de ssh-agent kullanarak olası bir güvenlik riskinin farkında olmalıdır :

insanlar Cygwin 1 altında ssh-ajan potansiyel tehlikeleri bilişli olmalıdır , ancak yerel bir netstat ve uzak portları altında / tmp / ssh-foo belirtilen port herkes tarafından erişilebilir görünmüyor olabilir ...?

[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html

Ve de anılan bağlantı :

ancak, Cygwin Unix etki alanı soketlerinin TEMEL SİGORTA olduğunu ve bu nedenle Cygwin altında ssh-agent kullanımını şiddetle DAVET EDİYORUM .

Cygwin altında ssh-agent'ı çalıştırdığınızda, /tmp/ssh-$USERNAME/dizinde AF_UNIX soketi oluşturur . Cygwin altında AF_UNIX soketleri AF_INET soketleri aracılığıyla taklit edilir. /tmp/ssh-$USERNAME/agent-socket-*Notepad ile dosyaya bakacak olursanız kolayca görebilirsiniz . Gibi bir şey göreceksin

!<socket >2080

sonra koş netstat -ave sürpriz! 2080 numaralı bağlantı noktasını dinleyen bir programınız var. Bu ssh aracısı. Ssh sunucudan bir RSA sorgusu aldığında, buna karşılık gelir /tmp/ssh-$USERNAME/agent-socket-*(Cygwin altında, bizim durumumuzda, bu bağlantıyı açacağı anlamına gelir localhost:2080) ve ssh-agent'tan RSA sorgusunu sahip olduğu özel anahtarla işlemesini ister ve ssh aracısından alınan yanıtı sunucuya iletir.

Unix altında, program bir AF_UNIX soketine erişmeye çalıştığında Unix çekirdeği izinleri kontrol ettiğinden, böyle bir senaryo sorunsuz çalışır. Ancak AF_INET soketleri için bağlantılar anonimdir ("güvensiz" bölümünü okuyun). Cygwin ssh-agent'ınızın çalıştığını düşünün. Kötü niyetli bir bilgisayar korsanı kutunuza bağlantı kurabilir, ssh-agent tarafından kullanılan açık bağlantı noktasını bulabilir, SSH sunucunuzla bağlantı kurabilir, ondan RSA zorluğunu alabilir, bulduğu açık bir bağlantı noktası üzerinden ssh-ajanınıza gönderebilir, RSA yanıtı, SSH sunucusuna ve voila'ya gönderin, sunucunuzda başarıyla oturum açtı.


Kulağa hoş ve ayrıntılı geliyor. Ben https kimlik yardımcısı ve ben ssh bağlantıları hallettim! +1
VonC

49

Kaynak: Git'i Ayarla

Aşağıdaki komut, şifrenizi bir süre hafızaya kaydeder ( Git 1.7.10 veya daha yenisi için).

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

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

2
Birden çok kimlik bilgisini önbelleğe almak için (her şifreyi hatırlamak zorunda kalmadan ) 'netrc' kimlik bilgisi yardımını ( stackoverflow.com/a/18362082/6309 ) tercih ederim . Ancak Windows'daysanız ve bellek önbelleğini kullanmak istiyorsanız, winstore'a ihtiyacınız var ( stackoverflow.com/a/15310274/6309 )
VonC

9
Bu şimdiye kadarki en iyi cevap IMHO.
Chiel ten Brinke

35

Git pull & push için https kullandığınızda , remote.origin.urlher bastığınızda giriş kullanıcı adını (veya / ve parolasını) önlemek için projenizi yapılandırmanız yeterlidir.

Nasıl yapılandırılır remote.origin.url:

URL biçimi:
    https: // {username: password @} github.com/ {sahibi} / {repo}

URL'deki parametreler:

* kullanıcı adı 
İsteğe bağlı, gerektiğinde kullanılacak kullanıcı adı.
kimlik doğrulama, belirtilirse, kimlik doğrulaması gerektiğinde tekrar kullanıcı adı girmeniz gerekmez. E-posta kullanmayın; "@" olmayan kullanıcı adınızı kullanın, aksi takdirde URL doğru şekilde ayrıştırılamaz, * parola isteğe bağlı, kimlik doğrulaması gerektiğinde kullanılacak şifre. Belirtilirse, kimlik doğrulaması gerektiğinde parolayı tekrar girmeniz gerekmez. İpucu: bu değer düz metin olarak saklanır, bu nedenle güvenlik endişeleri için bu parametreyi belirtmeyin, * Örneğin git config remote.origin.url https: //eric@github.com/eric/myproject

@ Güncelleme - kullanma ssh

Kurulum adımı biraz daha karmaşık olmasına rağmen sshprotokolü kullanmaktan daha iyi bir çözüm olduğunu düşünüyorum https.

Kaba adımlar:

  • Komut kullanarak ssh anahtarları oluşturun, örneğin ssh-keygenLinux'ta, pencerelerde msysgitbenzer komutlar sağlar.
  • Yerel makinedeki özel anahtarı uygun bir yerde saklayın, örn ~/.ssh. Ve ssh-addkomut aracılığıyla ssh aracısına ekleyin .
  • Ortak anahtarı Git sunucusuna yükleyin.
  • Değişim remote.origin.urliçin Git depo arasında sshtarzında, örneğingit@gitlab.com:myaccount/myrepo.git
  • Ardından, çekme veya itme işleminde kullanıcı adını veya şifreyi girmenize gerek yoktur.

İpuçları:

  • Ssh anahtarınızın bir parolası varsa, varsayılan olarak, makinenizin her yeniden başlatılmasından sonra anahtarın ilk kullanımında girmeniz gerekir.

@Update - httpsve sshprotokol arasında geçiş yapar .

Sadece değiştirmek remote.origin.urlyeterli olacaktır veya repo_home/.git/configdeğeri değiştirmek için doğrudan düzenleyebilirsiniz (örneğin viLinux'ta kullanmak ).

Genellikle her protokol için bir satır eklerim ve bunlardan birini kullanarak yorum yaparım #.

Örneğin

[uzak "başlangıç ​​noktası"]
        url = git@gitlab.com: myaccount / myrepo.git
        # url = https: //myaccount@gitlab.com/myaccount/myrepo.git
        fetch = + refs / heads / *: refs / uzaktan kumandalar / orijin / *

Http [s] tabanlı URL'nin kullanıcı adı genişletmeyi desteklediğinden emin misiniz ? Kılavuzda git-fetch(1)yalnızca git/ sshtabanlı URL'ler için bahsedilmektedir .
gün

@ plmday evet, kullanıyorum, git versiyonum 1.8.2.3 ve 1.8.4, daha yüksek verionun bu konuda değişip değişmediğinden emin değilim.
Eric Wang

1
URL'de (HTTPS kullanırken bile) şifrenizi sağlayan NB, sizin ve deponuz arasındaki her şeye görünür olduğu anlamına gelir.
William

3
Hayır, şifreyi https://username:password@github.com/girmek güvenlidir. Bkz. Stackoverflow.com/questions/4980912/…
slowhand

1
Ve aradığım şey buydu (tam otomasyon için)
Joshua

16

GitHub şifrenizi Git'te önbelleğe alabilirsiniz:

GitHub'ın resmi belgelerindeki talimatları uygulayın .

Yukarıdaki bağlantıdaki talimatları izledikten sonra, kullanıcı adınızı / şifrenizi her seferinde yazmadan deponuza / deponuza / gönderebilmeniz gerekir.


5
Bu, buradaki en iyi yanıttır ve kabul edilen bir IMO olmalıdır
TheZuck

1
Kabul edildiğinde, resmi belgelere atıfta bulunacak bir cevap öncelikli olmalıdır. Talimatlarını memnuniyetle takip ettim ve standart sözleşmeleri kullanmayı tercih ettim.
johnnieb

10

İşte başka bir seçenek:

Yazmak yerine

git push origin HEAD

Yazabilirsiniz:

git push https://user:pass@yourrepo.com/path HEAD

Açıkçası, çoğu mermi ile bu parola tarihte önbelleğe alınmasına neden olacaktır, bu yüzden bunu aklınızda bulundurun.


1
Bash'te, bir veya daha fazla önde gelen boşluk eklemek genellikle geçmişin dışında kalır. Ancak Git Bash'te değil .
Peter Mortensen

Bu sadece benim için çalıştı :)
Naveen Kumar V

9

Benim için işe yarayan şey düzenlemek .git/configve kullanmaktı

[remote "origin"]
        url = https://<login>:<password>@gitlab.com(...).git

Bunun şifrenizi saklamanın güvenli olmayan bir yolu olduğunu söylemeye gerek yok, ancak bunun bir sorun olmayabileceği ortamlar / durumlar var.


6

SSH anahtarı veya .netrcdosyası sizin için çalışmadıysa, sizin için çalışabilecek basit, ancak daha az güvenli bir çözüm git-credential-store - Kimlik bilgilerini diskte saklamak için yardımcı:

git config --global credential.helper store

Varsayılan olarak, kimlik bilgileri dosyaya kaydedilir ~/.git-credentials. Oluşturulacak ve yazılacak.

Bu yardımcıyı kullanmanın şifrelerinizi şifrelenmemiş olarak yalnızca dosya sistemi izinleriyle korunan bir şekilde saklayacağını lütfen unutmayın. Bu kabul edilebilir bir güvenlik dengesi olmayabilir.


5

Aynı sorunu yaşadım.

Bu yüzden .git/configdosyayı projemden değiştirdim ,

url = https://github.com/<your-user-here>/<your-repo-here>

için

url = git@github.com:<your-user-here>/<your-repo-here>

ve ayardaki Git profiline SSH genel anahtarını ekledi.

SSH genel anahtarı için:

cat ~/.ssh/id_rsa.pub

1
ile cat ~/.ssh/id_rsa.pubrsa anahtarı almak ve git web portalı ortamda yapıştırın.
Anupam Maurya

4

HTTPS için güncelleme:

GitHub, HTTPS kullanırken kimlik bilgilerinizi saklayan Windows için yeni bir program başlattı:

Kullanmak:

  • Programı buradan indirin

  • Programı çalıştırdıktan sonra .gitconfigdosyanızı düzenleyecektir . .gitconfigBunlardan birkaçına sahipseniz , düzeltip düzeltmediğini tekrar kontrol edin . Doğru olanı düzenlemediyse, aşağıdakileri.gitconfig

    [credential]
        helper = !'C:\\Path\\To\\Your\\Downloaded\\File\\git-credential-winstore.exe'
    

    Sonra satır sonu NOT [credential]. Gerekli.

  • Komut satırı istemcinizi açın ve bir git push origin masterkez deneyin . Sizden bir şifre girilmesini isterse şifreyi girin. Şifre kaydedildi!


Teşekkürler Varun, çekicilik çalıştı!
Joyy

4

Windows Git kullanıcıları için, çalıştırdıktan sonra git config --global credential.helper storehala bir parola isteniyorsa, bu komutu kullanarak yapılandırma dosyasının nereye yazıldığını kontrol etmeniz daha iyi olur

git config --list --show-origin

Benim durumumda, 'C: \ Program Files \ Git \ mingw64 \ etc \ gitconfig' yapılandırma dosyasını el ile düzenledikten ve aşağıdaki metni ekledikten sonra işe yaradı.

[credential]
    helper = store

3

Temel olarak iki seçeneğiniz var.

Aynı kullanıcıyı her iki makinede de kullanırsanız, .pub anahtarını PC'nize kopyalamanız gerekir, böylece GitHub aynı kullanıcı olduğunuzu bilir.

Bilgisayarınız için yeni bir .pub dosyası oluşturduysanız ve makinelere farklı kullanıcılar gibi davranmak istiyorsanız, yeni .pub dosyasını GitHub web sitesine kaydetmeniz gerekir.

Bu hala işe yaramazsa, ssh doğru yapılandırılmamış olabilir ve ssh anahtarlarınızın konumunu bulamıyor olabilir. Deneyin

ssh -vv username@github.com

SSH'nin neden başarısız olduğu hakkında daha fazla bilgi almak için.


3

Git yapılandırma dosyanızı doğrudan güncelleme ( süslü komutları ezberlemek istemiyorsanız ):

Senin Aç .git/configfavori metin editörü dosyasını. Klonladığınız klasörde veya gerçekleştirdiğiniz git initdepoda olacaktır. Bu depoya gidin. .gitgizli bir klasördür ve Ctrl+ tuşuna basmak Hgizli klasörü göstermelidir ( ls -aterminalde).

Aşağıda .git/configdosyanın bir örneği bulunmaktadır . Bu satırları kopyalayıp yapıştırın ve bu satırları Git bilgilerinizle güncellediğinizden emin olun.

[user]
        name = Tux
        email = tux@gmail.com
        username = happy_feet

[remote "origin"]
        url = https://github.com/happy_feet/my_code.git
        fetch = +refs/heads/*:refs/remotes/origin/*

URL bölümünü SSH için aşağıdaki biçimle değiştirin:

url = git@github.com:happy_feet/my_code.git

( Yukarıdaki biçimler GitHub veya Bitbucket gibi çeşitli Git uzak sunucularla değişmez. Git'i sürüm kontrolü için kullanıyorsanız aynıdır ):

Not: Uzak bir Git havuzuna bağlamanın SSH yolu, genel SSH anahtarınızı Git uzak sunucunuza eklemenizi gerektirir ( GitHub veya Bitbucket gibi. SSH anahtarları için ayarlar sayfasında arama yapın ).

SSH anahtarlarınızı nasıl oluşturacağınızı öğrenmek için, bkz. SSH anahtarları oluşturma


2

Benim için işe yarayan buydu:

git remote set-url origin https://username@github.com/username/reponame.git

Misal:

git remote set-url origin https://jsmith@github.com/jsmith/master.git

Teşekkür ederim Cevabınızı yükseltirim
Mandeep Singh

2

İki adım uygulamanız gerekir -

  1. git remote remove origin
  2. git remote add origin git@github.com:NuggetAI/nugget.git

Git URL'sinin HTTPS URL'si değil SSH URL'si olduğuna dikkat edin ... Buradan seçim yapabilirsiniz:

Resim açıklamasını buraya girin


2

SSH yerine HTTPS'yi klonladıysanız ve çekme, itme ve getirme sırasında kullanıcı adı ve şifre istemiyle ilgili sorun yaşıyorsanız. Bu sorunu sadece UBUNTU için çözebilirsiniz

1.Adım: Kök dizine gidin

cd ~/

bir dosya oluşturun .git-credentials

Bu içeriği sizinle birlikte bu dosyaya ekleyin usename passwordvegithosting URL

https://user:pass@example.com

Sonra komutu yürütün

git config --global credential.helper store

Artık itme çekebilir ve repodan tüm detayları sorunsuzca çekebilirsiniz.



0

Birçok kullanıcının söylediği gibi Git depo URL'nizi HTTPS'den SSH'ye değiştirmeniz yeterlidir.

Makinenizde bir SSH anahtarı oluşturmadıysanız, bunu yapmanız gerekecektir.

Ek bir bilgi olarak, bu değişikliği yaptıktan sonra hala aynı hatayı alıyordum:

İzin reddedildi.

Benim durumumda, sorun ngh komutunu yürütmek için Windows Kabuğu kullanıyordum; Bu komut SSH ifadesini istemek için bir istem açması ve Windows Kabuğu bu tür istemleri açmaması nedeniyle kimlik doğrulama başarısız oldu.

Bu yüzden, Git kabuğunu açıp orada ngh komutunu yürütmek, her seferinde SSH ifadesini sormak ve "voilà" sormak zorunda kaldım ... Sadece iyi çalıştı!


0
    # create the company identity file
    ssh-keygen -t rsa -b 4096 -C "first.last@corp.com"
    # save private key to ~/.ssh/id_rsa.corp, 
    cat ~/.ssh/id_rsa.corp.pub # copy paste this string into your corp web ui security ssh keys

    # create your private identify file
    ssh-keygen -t rsa -b 4096 -C "me@gmail.com"
    # save private key to ~/.ssh/id_rsa.me, note the public key ~/.ssh/id_rsa.me.pub
    cat ~/.ssh/id_rsa.me.pub # copy paste this one into your githubs, private keys

    # clone company internal repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@git.in.corp.com:corp/project.git

    export git_msg="my commit msg with my corporate identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@corp.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # clone public repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@github.com:acoolprojectowner/coolproject.git

    export git_msg="my commit msg with my personal identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@gmail.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.me -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # stop :: how-to use different ssh identity files
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.