Github izni reddedildi: ssh add agent'ın kimliği yok


148

Bu GitHub'a ilk kez erişiyorum ve bir konsol kullanma deneyimim yok. Bash kullanarak MacBook'tayım. GitHub'a erişmeye çalıştığımda şunu alıyorum:

git clone git@github.com:dhulihan/league-of-legends-data-scraper.git
Cloning into 'league-of-legends-data-scraper'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

İzin reddedildiğine ilişkin Github sayfasındaki talimatları izlemeyi denedim.

Kullandığımda ssh -vT git@github.comaşağıdakileri alıyorum:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to github.com [192.30.252.129] port 22.
debug1: Connection established.
debug1: identity file /Users/XXXX/.ssh/id_rsa type -1
debug1: identity file /Users/XXXX/.ssh/id_rsa-cert type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /Users/XXXX/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/XXXX/.ssh/id_rsa
debug1: Trying private key: /Users/XXXX/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

Sonra, eval "$(ssh-agent -s)""Agent pid 2314" değerini ssh-add -ldöndürür , ancak "Agent'ın kimliği yoktur."

Ve burada sıkışıp kaldım.


Eğer Do sahip bir SSH anahtarı yarattı? Github hesabınızla listelediğiniz var mı? Mac'inizde anahtar var mı?
Etan Reisner

Bu sorunun cevabını arıyordum (bu sisteme aşina değilim) ve bunu buldum: mac.github.com Tüm sorunlarımı çözdü. Şiddetle tavsiye ederim. Doğru yönde ilerlediğiniz için teşekkürler Etan!
Karanlık

4
Bunu bu soruya bir cevap (sorunun nasıl çözüldüğü hakkında daha fazla ayrıntıyla) eklemek ve yanıtınızı kabul etmek isteyebilirsiniz.
Etan Reisner

Tamam, cevabı gönderdim. SO bana sadece 2 saat içinde kabul edebileceğimi söylüyor.
Karanlık

Yanıtlar:


194

Bu yanıtın tüm ayrıntıları .

Özet olarak, ssh-add -ldöner “ajan hiçbir kimlikleri vardır”, bu tarafından kullanılan anahtarları gelir ssh(gibi dosyalarda saklanır ~/.ssh/id_rsa, ~/.ssh/id_dsaya eksik, onlar için bilinmeyen vardır, vs.) ssh-agentkimlik doğrulama ajandır veya bunların izinleri olduğunu, hangi yanlış ayarlanmış (örneğin, dünya yazılabilir).

Anahtarların eksik ya da herhangi oluşturulmaz varsa, kullanımı ise ssh-keygen -t rsa, o zaman ssh-addbunları eklemek için.

Anahtarlar var, ancak bilinmiyorsa ssh-agent(standart olmayan bir klasördeymiş gibi), ssh-add /path/to/my-non-standard-ssh-folder/id_rsabunları eklemek için kullanın .

Veya  ile ilgili sorun yaşıyorsanız bu cevaba bakın .ssh-addssh-agent


4
Güzel ve kısa bir cevabın bağlantısı için @ Doedoe'a teşekkür ederiz. Ve keyS (yani birden fazla Git hesabı) olanlar ssh-add /path/to/keyXiçin, her biri için, özellikle standart olmayan isimleri varsa, her biri için kullanmak zorunda kalabilirsiniz . Ayrıntılar burada: stackoverflow.com/questions/3225862/… (güzel bir cevap)
tuk0z

Bunun için teşekkürler. Burada sıkışıp kaldım .. ancak sorunun izinler bölümünü çözdükten sonra ssh-add tekrar çalıştırmam gerektiğini fark ettim . Bundan sonra ssh -vT git@github.comişe yaramadı. Yukarıda bahsi geçen yorumcu gibi mutlak yol eklemem gerekiyordu . Sonra, hepsi sos oldu.
jungledev

2
İkinci durumda benim parola unuttum ve ettik kullanarak iyileşti help.github.com/articles/how-do-i-recover-my-ssh-key-passphrase
Malder

111

bunu dene:

ssh-add ~/.ssh/id_rsa

benim için çalıştı


5
Merhaba, SO'ya hoş geldiniz. Lütfen kodunuzu açıklayın, böylece diğer kullanıcılar neler olup bittiğini anlayabilir. Şerefe.
Cthulhu

4
Yeniden başlattığınızda anahtarlarınız kaybolur ve onları tekrar 'ssh-' eklemeniz gerekir.
Louwki

@Louwki Evet ... bu çok can sıkıcı. Bunun bir yolunu biliyor musun?
Chris Cirefice

3
@ChrisCirefice, anahtarlığa kalıcı olarak eklemek için ssh-add parametresini bir parametre ile yapın. ssh-add -K ~ / .ssh / [özel anahtarınız]
Louwki

1
Benim durumumda, özel anahtar için dosya izinleri yanlıştı. Tarafından düzeltildi chmod 600 ~/.ssh/id_rsa, sonrassh-add ~/.ssh/id_rsa
Morteza Ziyae

39

MacOS Sierra & High Sierra & Catalina için 2019 YANITI:

Not: diğer cevapların çoğunda yeni bir ssh anahtarı oluşturmanız gerekir ... ama bunu yapmanız gerekmez :)

Https://openradar.appspot.com/27348363 adresinde ayrıntılı olarak açıklandığı gibi, Yosemite komut tarafından eklenen SSH anahtarlarını hatırlamak için kullanılana kadar macOS / OS Xssh-add -K <key>

Bu yüzden çalışması için atmam gereken 4 adım:

1: ssh-add ~/.ssh/PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

2: Aşağıdakileri şuraya ekleyin :~/.ssh/config

Host * 
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

3: osxkeychain yardımcısını kullanan tüm gitconfig girişlerini kaldırdığınızdan emin olun:

 https://github.com/gregory/dotfiles/commit/e38000527fb1a82b577f2dcf685aeefd3b78a609#diff-6cb0f77b38346e0fed47293bdc6430c6L48

4: etkili olması için terminalinizi yeniden başlatın.


3
Harika cevap, kendim bundan bahsedecektim! Görünüşe göre, OS X 10.12.2 ve sonraki sürümler kimlikleri ssh-agent'a otomatik olarak yüklemez (ki bu şahsen gerçekten aptal bir kullanılabilirlik kararıdır, ancak güvenlik sonuçlarını anlıyorum). Bu nedenle, manuel olarak yüklemek için SSH yapılandırmasını değiştirmeniz gerekir. Ben sadece hata çıkışı internet arama bir saat yerine, daha iyi bir çözüm yol isterdim.
Chris Cirefice

12

Sonunda çözdüğüm aynı sorun üzerinde bir süre takılıp kaldım.

Benim sorunum : Herhangi bir itme yapamadım. Uzaktan kumandayı (kullanarak git remote -v) kontrol edebilir ve görebilirim , ancak yürüttüğümde git push origin masterdöndü: Permission denied (publickey). fatal: Could not read from remote repository.ve böylece.

Nasıl çözdüm:

  • Kullanarak bir anahtar oluşturdumssh-keygen -t rsa . Anahtar dosyası için bir ad girmek (istendiğinde) işe yaramazdı.
  • Sonra başarılı bir şekilde döndü anahtar (git) : ekleyebilirssh-add /Users/federico/.ssh/id_rsaIdentity added: /Users/myname/.ssh/id_rsa (/Users/myname/.ssh/id_rsa)
  • Bu yardım sayfasını kullanarak github'a SSH anahtarını ekledim .
  • Github'un 'İzin reddedildi publickey' yardım sayfasındaki tüm komutları denedikten sonra, yalnızca ssh-add -lkomut çalışmış / yararlı görünüyordu (önceki adımları uyguladıktan sonra), anahtarımı başarıyla döndürdü. Son adım GitHub sayfanızdaki genel anahtarınızı nerede kontrol edeceğinizi gösterir. Ve bu komut tüm anahtarlarını kontrol yardımcı olacaktır: ls -al ~/.ssh.

Sonra itme komutu sonunda çalıştı!

Umarım bu yardımcı olacak ! Herkese iyi şanslar.


7

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

ssh-keygen -t rsa
ssh-add /Users/*yourUserNameHere*/.ssh/id_rsa** 
pbcopy < ~/.ssh/id_rsa.pub**

Github hesabınıza gidin: https://github.com/settings/profile

1) Tıklayın: SSH ve GPG tuşları

2) Yeni SSH Anahtarı ve Geçmiş

3) SSH Anahtarı Ekle

Bitti!


Evet - id_rsa.pub dosyasını oluşturmanın diğer adımlarını geçtiyseniz, anahtarı panonuza kopyalayan ve @zouhair talimatlarını takip eden bu pbcopy satırını kopyalayıp yapıştırın - github anahtarınızı bilmelidir. Özellikle 2FA kullanıyorsanız.
davidrynn

Biraz kafam karıştı çünkü mevcut dokümanlar git github_rsa / github_rsa.pub oluşturuyor diyor. Her ikisinde de /.ssh dizinim var ve "izin almıyorum" gibi görünüyor. Ben boşuna id_rsa kullanarak aynı dizinde kopyaları oluşturdum.
Mark Löwe

6

her şeyden önce
bu terminal için ssh dizininize gitmeniz gerekir, mac'taki terminalinizde veya pencerede ne kullanırsanız kullanın

cd ~/.ssh

şimdi ssh
burada tüm ssh anahtar / tüm projeleri ile ilgili dosyaları bulabilirsiniz. şimdi, kullanılabilir ssh anahtarı olup olmadığını göstermek için aşağıdaki komutu yazın

ls

bu size mevcut tüm ssh'ları gösterecek, benim durumumda
şimdi iki tane vardı , içine bir ssh eklemek için bir ajan başlatmanız gerekecek. Bu tip için aşağıdaki komut

eval "$(ssh-agent -s)"

şimdi son fakat en az değil, bu ajan türü aşağıdaki komutu aşağıdaki ssh ekleyeceksiniz

ssh-add ~/.ssh/your-ssh

değiştirmek

your-ssh dosyasını bir liste formu ikinci adımı bulduğunuz ssh dosya adınızla değiştirin ls command


5

Bu herhangi bir yeni terminal için neden olabilir, ajan kimliği farklı. Temsilci için Özel anahtarı eklemeniz gerekir

$ ssh-add <path to your private key>

1

Fark ettiğim bir diğer unsur, Mac OS X / Users / içindeki kök klasörünüzde genellikle .ssh klasörünün oluşturulmasıdır. Eğer ssh -vT git@github.com komutunu başka bir klasörden kullanmaya çalışırsanız, doğru anahtarı eklemiş olsanız bile hata verir.

Başarılı bir şekilde kimlik doğrulaması yapmak için anahtarı geçerli klasörden tekrar silmeniz (ssh-add 'id_rsa' doğru yolu) eklemeniz gerekir (anahtarı Git'teki profilinize zaten yüklediğinizi varsayarak)


1

Bu benim için çalıştı:
chmod 700 .ssh chmod 600 .ssh/id_rsa chmod 644 .ssh/id_rsa.pub

Sonra şunu yazın: ssh-add ~/.ssh/id_rsa


Sorunun ~/.sshizinlerle ilgili olduğunu sanmıyorum . Yine de, tam komutu (burada chmod) ekleyerek ve bunun ne yaptığını ve neden gerekli olduğunu açıklayarak cevabınızı büyük ölçüde geliştirebilirsiniz .
Robert

0

Uzun süre mücadele ettikten sonra nihayet Windows'ta bu sorunu çözebildim, Benim için Kullanıcı env değişkeni GIT_SSH

"C: \ Program Dosyaları (x86) \ WinScp \ PuTTY \ plink.exe"

WinScp ile birlikte kuruldu. İşaretleri git-scm "C: \ Program Files \ Git \ usr \ bin \ ssh.exe" ile birlikte gelen varsayılan ssh.exe'yi kullanacak şekilde değiştirdim.


0

BitBucket için adımlar:

yeni anahtar oluşturmak istemiyorsanız, SKIP ssh-keygen

ssh-keygen -t rsa 

Genel anahtarı panoya kopyala:

clip < ~/.ssh/id_rsa.pub

Bit Bölümüne Giriş: Profili Göster -> Ayarlar -> SSH Tuşları'na gidin (Güvenlik sekmesinde) Anahtar Ekle'yi tıklayın, Anahtarı kutuya yapıştırın, açıklayıcı bir başlık ekleyin

Git Bash sayfasına geri dön:

ssh-add -l

Şunları elde etmelisiniz:

2048 SHA256:5zabdekjjjaalajafjLIa3Gl/k832A /c/Users/username/.ssh/id_rsa (RSA)

Şimdi: git pullçalışmalı


0

Bir sabit disk bir yedekten geri yükledikten sonra bu sorunu yaşadım.

Benim sorunum: Uzaktan kumandayı kontrol edip görebiliyordum (git remote -v kullanarak), ama git push origin master'ı çalıştırdığımda geri döndü: İzin verilmedi (publickey). ölümcül: Uzak depodan okunamadı.

Zaten bir SSH klasörüm ve SSH anahtarlarım vardı ve bunları Terminal ( ssh-add /path/to/my-ssh-folder/id_rsa) ile eklemek kimliğimi başarıyla ekledi, ancak yine de itemedim ve hala aynı hatayı aldım. Yeni bir anahtar oluşturmak benim için kötü bir fikirdi, çünkü AWS'deki diğer çok güvenli izinlere bağlıydı.

Anahtar ile Github profilim arasındaki bağlantı kopmuştu.

Çözüm: Anahtarı Profil> Ayarlar> SSH ve GPG tuşlarında Github'a yeniden eklemek sorunu çözdü.

Ayrıca: Hesabımda 2 faktörlü kimlik doğrulama kuruldu. Bu durumda, Terminal kimlik bilgileri isterse, kullanıcı adınızı kullanın - ancak Github şifrenizi DEĞİL. 2 faktörlü kimlik doğrulama için kimlik doğrulama kodunuzu kullanmanız gerekir (benim için bu, telefonumda Authy tarafından oluşturuldu ve pw için Terminal'e kopyalamak zorunda kaldım).

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.