Bitbucket'te Git: Genel SSH anahtarımı yükledikten sonra bile her zaman şifre istendi


180

Kızkardeşimi yüklenen ~/.ssh/id_rsa.pubiçin Bitbucket en SSH tuşları olarak açıkladı , ancak Git hala her operasyonda (örneğin benim parola soruyor git pull). Bir şey mi kaçırdım?

Özel bir havuz (başka bir kişinin özel havuzunun çatalı) ve ben böyle klonladım:

git clone git@bitbucket.org:Nicolas_Raoul/therepo.git

İşte benim yerel .git/config:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git
[branch "master"]
        remote = origin
        merge = refs/heads/master

Aynı ortak anahtarla aynı ortamda, Github'daki Git iyi çalışır.
.ssholduğunu rwx------, .ssh/id_rsaolduğunu -rw-------, .ssh/id_rsa.pubolduğunu-rw-r--r--

Yanıtlar:


265

Ssh url'sini kullanarak klonladığınızdan emin misiniz?

Orijin URL'si url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git, https kullanıyorsa, ssh anahtarlarınıza bakılmaksızın şifre isteyeceğini söyler .

Yani yapmak istediğiniz şey şudur:

yapılandırma dosyanızı mevcut deponuzda açın.

vim .git/config

ve url ile satırı

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git

için

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@bitbucket.org:Nicolas_Raoul/therepo.git

62
Haklısın, teşekkürler! Büyük olasılıkla yanlış URL ile klonladım. Ben URL'yi değiştirilir .git/configile git@bitbucket.org:Nicolas_Raoul/therepo.gitve şimdi çalışıyor!
Nicolas Raoul


3
Bir depo oluştururken bana https url öneren bitbucket oldu! Nasıl olur!
Denis Kniazhev

4
Bitbucket'iniz özel ise, git protokolünü kullanmak istiyorsanız, ayarlarınızda BitBuket web sitesine ssh anahtarı eklemeniz gerekir.
cevaris

7
URL değiştirmek zorunda kaldı ssh://git@bitbucket.org/userName/repoName.git- ssh://önek olmadan işe yaramadı.
trygub

34

As açıkladı Burada sizinle klonu eğer, SSH url, sen yok kullanıcı adı / şifreyi / çekme itme her zaman girmeniz gerekir. Yukarıdaki yanıtı kontrol edin @manojlds

Ancak HTTPS ile klonlamak ve her seferinde kullanıcı adı / şifre girmekten kaçınmak istiyorsanız, aşağıdaki komutla kimlik bilgilerini önbelleğe depolayabilirsiniz :

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

Burada 3600 (saniye) 1 saat anlamına gelir, gereksiniminize göre değiştirebilirsiniz.


@atilkan Bu durumda, makine / işletim sistemi ve git sürüm bilgilerini sağlayabilir misiniz? Önbellek ayarını yapmaya çalıştığınızda varsa hata mesajı.
Ajeet Şah

Birinin depo formu bitbucket'i klonladım ve işte benim uzaktan kumandalarım. manecs-MBP:LocationTracker manec$ git remote -v origin https://Vysh1@bitbucket.org/Vysh1/locationtracker.git (fetch) origin https://Vysh1@bitbucket.org/Vysh1/locationtracker.git (push)
Banee Ishaque K

@AjeetShah yanlış şifreyi girersem ne olur? yanlış şifreyi de önbelleğe alır mı?
anaval

@anaval Neden denemiyorsunuz ve bundan sonra önbelleği temizledikten veya devre dışı bıraktıktan sonra doğru şifreyi girmeyi deneyin? Cevabı düzenleyin ve bunu nasıl yaptığınızı bize bildirin :)
Ajeet Shah

19

Yukarıda zaten cevaplandı. Yukarıda kontrol edilecek adımları özetleyeceğim.

git remote -vproje yönetiminde çalıştırmak . Çıktıda başlangıçtan itibaren uzaktan url gösteriliyorsa, https://abcher seferinde kullanıcı adı şifresi gerekebilir.

Yani uzaktan url çalışmasını değiştirmek için git remote set-url origin {ssh remote url address starts with mostly git@bitbucket.org:}.

Şimdi git remote -v değiştirilen uzak URL'yi doğrulamak için çalıştırın .

Bakınız: https://help.github.com/articles/changing-a-remote-s-url/


16

Gelecekten Merhaba Google çalışanları.

MacOS> = High Sierra'da, SSH anahtarı nedenlerden dolayı artık KeyChain'e kaydedilmez .

Kullanılması ssh-add -Kartık sıra yeniden başlatılır kurtulur.

İşte 3 olası çözüm .

İlk yöntemi başarıyla kullandım. Aradım bir dosya oluşturdum configiçinde ~/.ssh:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

2
Bunun daha fazla ilgiye ihtiyacı var! Yaşları bir çözüm aramakla geçirdim ve configdosyadaki ilk çözüm /.sshmükemmel!
Kitson

1
Bu yanıtlar MacO'lardaki sorunumu çözdü: cd ~/.ssh+ ls+ nano config(dosya zaten oluşturuldu) + Vaiden'ın cevabına kod ekle. Sonra dosyayı kaydetmek için X + Y'yi kontrol edin.
Sébastien Gicquel

9

HTTP istek durumunda, kimlik bilgilerini (şifre ile) doğrudan url'ye yapıştırmak da mümkündür:

http://username:password@bitbucket.org/...

Bu, her seferinde kimlik bilgilerinizi vermek için acıyı kurtaracaktır. Basit .git / config (url) değiştirmek.


10
Ama güvenli değil. Parola gibi bir harf varsa işe yaramaz$%
Gank

3
Bu yorumu okuyan herkes lütfen unutmayın: sadece işe yaradığı için doğru olduğu anlamına gelmez . Şifrenizi kalıcı olarak herhangi bir yere kopyalıyorsanız, yanlış yapıyorsunuz demektir. Klasör izinlerini her zaman şu şekilde ayarlayanlarla aynı 777: durdurmak, düşünmek, araştırmak, anlamak ve sonra düzgün şekilde yapmak.
dKen

9

Bu cevapların hiçbiri bana yardımcı olmadı, sorunumun biraz farklı olduğu ortaya çıktı. Anahtarı göndermeden önce her seferinde şifremi soran ssh'dı. Yapmam gereken şey, şifremi şu komutla bağlamaktı:

ssh-add -K ~/.ssh/id_rsa

Daha sonra sizden şifrenizi girmeniz ve saklamanız istenir. Parola her istendiğinde, aradığınız çözüm bu olabilir

'/Users//.ssh/id_rsa' anahtarı için parola girin:

Daha fazla bilgi burada

NOT: Bunu mac makinemde başarıyla kullandım, ancak @Rob Kwasowski'nin aşağıda belirttiği gibi, büyük harf Kseçeneği mac için benzersizdir. Mac'te değilse küçük harf kullanmanız gerekir k(bu muhtemelen mac için de çalışır, ancak test etmedim).


1
Harika, ama küçük harf olmalı k:ssh-add -k ~/.ssh/id_rsa
Rob Kwasowski

lütfen biraz açar mısın?
stackPusher

Burada açıklandığı gibi: ssh.com/ssh/add , komut satırı seçeneği küçük kharftir, bu seçenekler büyük / küçük harf duyarlıdır.
Rob Kwasowski

ancak büyük K seçeneği anahtarı anahtarlığa ekleyecek, küçük harf k ise aracıya yalnızca anahtar ekleyecektir. yani sorduğum şey 'anahtarın neden anahtarlığınıza eklenmesini istemiyorsunuz?'
stackPusher

1
Lütfen platform farklılıklarının farkında olun, -KMac'e özgüdür: help.github.com/en/articles/error-ssh-add-illegal-option----k
Rob Kwasowski

5

Sanırım bunun Step 1için Windowsve Step 2bunun için Linuxama düzgün bir şekilde bahsettiğini unuttun.
Ajeet Shah

Bu 3 adımı Windows kutumda çalıştırdım ve işe yaradı.
webdev5

2
Bu durumda, bunu Linux işletim sisteminde eklemek istiyorum, aynı etki için sadece adım2 ve adım3'e ihtiyacımız var :)
Ajeet Shah

4

Aşağıda iTerm / Terminal üzerinden bitbucket'e komut satırı erişimi varsayılmaktadır.

İçin MacOS Sierra 10.12.5, benim sistemim eşdeğer sorunu ortaya - bitbucket her bağlantıda benim SSH parola soran.

Sorun, burada TN2449 Teknik Notunda açıklanan macOS 10.12.2'deki OpenSSH güncellemeleriyle ilgilidir .

Çözümünüzü çok iyi ayarlamak isteyebilirsiniz, ancak ~ / .ssh / config dosyanıza eklendiğinde aşağıdakiler çalışır:

Host *
    UseKeychain yes

Ssh configs hakkında daha fazla bilgi için ssh_config için man sayfalarına bakınız:

% man ssh_config

Bir başka şey: Bir yazı çıktı üzerinde olduğu süper burada bu sorunu ve ihtiyaç ve kurulum bağlı olarak çeşitli çözümler anlatılır.


2

Depoyu SSH URL yerine HTTPS URL'si ile klonladım, bu yüzden SSH Anahtarını ekledikten sonra bile Bash Shell'de şifre istiyordu.

Sadece Düzenlenen ./.git/configdosyayı ve değerini değişti urlbasitçe değiştirerek değişken https://içinssh://

Örneğin

[core]
        ...
        ...
        ...
[remote "origin"]
        url = https://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...

Olarak değiştirildi:

[core]
        ...
        ...
        ...
[remote "origin"]
        url = ssh://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...

1

SSH kimlikler dosyanızı tekrar kontrol etmeniz gerekebilir. BitBucket'e, BitBucket'e kaydettiğiniz eşdeğer ortak anahtara göre farklı / yanlış bir özel anahtara bakmanız için rehberlik ediyor olabilirsiniz.

Şununla kontrol et tail ~/.ssh/config- şuna benzer bir şey göreceksiniz:

Host bitbucket.org
 HostName bitbucket.org
 IdentityFile ~/.ssh/personal-bitbucket-ssh-key

Unutmayın, ek kimlikler (iş ve ev gibi) ssh-addkomutla yapılabilir , örneğin:

ssh-keygen -t rsa -C "companyName" -f "companyName"
ssh-add ~/.ssh/companyName

Hangi özel anahtara yerel olarak bakıldığını doğruladıktan sonra, bu durumda genel eşdeğerinizi alabilirsiniz:

cat ~/.ssh/personal-bitbucket-ssh-key.pub | pbcopy

Ve bu şifreyi BitBucket'e yapıştırın. Git push'larınıza artık (yukarıda belirtilen cevapların işaret ettiği gibi SSH klonunu kullanmanız şartıyla), cihazınız tanınan bir dostu olduğu için şifre olmadan izin verilecektir.

Umarım bu birisi için temizlemeye yardımcı olur.


0

Benimle, her ne kadar 'git clone ssh: //git@stash.xxx.com: 7999 / projName / projA.git' koştuğum halde, hala klonladığım bu yeni repo için şifre isteniyordu, yani .git / config dosyasını çalıştıran diğer depolara, [uzak "kaynak"] bölümünün altındaki URL olduğu ortaya çıktı, yeni repo için yukarıdaki ssh yoluna ayarlandı, ancak çalışan biri için https: xxx olarak ayarlandı .


0

Giriş yaparken başka tuhaflıklar da vardı. Tamamen aptal gibi görünen ama benim durumumda çalışan bir şeyle karşılaştım. MacOS'un anahtarlığına gitmeniz yeterlidir. Kenar çubuğunda oturum açma kilidi simgesini bulun. Oturumu kapatmak için tıklayın ve ardından oturum açmak için tıklayın. Aptalca geliyor ama sorunlarımı çözdü. Denemeye değer.

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.