Izin Github ditolak: ssh add agent tidak memiliki identitas

148

Ini adalah pertama kalinya saya mengakses GitHub dan saya tidak berpengalaman menggunakan konsol. Saya menggunakan MacBook menggunakan Bash. Ketika saya mencoba mengakses GitHub, saya mendapatkan ini:

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.

Saya sudah mencoba mengikuti instruksi pada halaman Github tentang izin yang ditolak.

Ketika saya menggunakan ssh -vT [email protected], saya mendapatkan yang berikut:

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).

Selanjutnya, eval "$(ssh-agent -s)"mengembalikan "Agen pid 2314", namun ssh-add -lmengembalikan "Agen tidak memiliki identitas."

Dan di situlah saya terjebak.

Gelap
sumber
Apakah Anda memiliki kunci SSH yang dibuat? Apakah Anda sudah terdaftar di akun github Anda? Apakah Anda memiliki kunci di mac Anda?
Etan Reisner
Saya mencari jawaban untuk pertanyaan itu (tidak terbiasa dengan seluruh sistem ini), dan menemukan ini: mac.github.com Ini menyelesaikan semua masalah saya. Saya sangat merekomendasikannya. Terima kasih atas dorongan ke arah yang benar, Etan!
Gelap
4
Anda mungkin ingin menambahkan bahwa jawaban untuk pertanyaan ini (dengan perincian lebih lanjut tentang cara menyelesaikan masalah Anda) dan menerima jawaban Anda.
Etan Reisner
Oke, saya sudah mengirimkan jawabannya. JADI memberitahu saya bahwa saya hanya dapat menerimanya dalam 2 jam.
Gelap

Jawaban:

194

Detail lengkap dalam jawaban ini .

Singkatnya, ketika ssh-add -lkembali “Agen tidak memiliki identitas”, itu berarti bahwa kunci yang digunakan oleh ssh(disimpan dalam file seperti ~/.ssh/id_rsa, ~/.ssh/id_dsa, dll) yang baik hilang, mereka tidak diketahui ssh-agent, yang merupakan agen otentikasi, atau bahwa hak akses mereka diatur secara tidak benar (misalnya, dapat ditulis dunia).

Jika kunci Anda hilang atau jika Anda belum membuat, gunakan ssh-keygen -t rsa, lalu ssh-adduntuk menambahkannya.

Jika kunci ada tetapi tidak diketahui ssh-agent(seperti jika ada di folder non-standar), gunakan ssh-add /path/to/my-non-standard-ssh-folder/id_rsauntuk menambahkannya.

Lihat jawaban ini jika Anda mengalami masalah dengan ssh-addatau  ssh-agent.

John Doedoe
sumber
4
Terima kasih @ Doedoe atas tautan ke jawaban yang bagus dan pendek. Dan bagi mereka yang memiliki kunci (yaitu beberapa akun Git), Anda mungkin harus menggunakan ssh-add /path/to/keyXuntuk masing-masing, terutama jika mereka memiliki nama yang tidak standar. Detail di sini: stackoverflow.com/questions/3225862/… (jawaban yang bagus)
tuk0z
Terima kasih untuk ini. Saya macet di sini .. tetapi saya menyadari bahwa saya perlu menjalankan ssh-add lagi setelah menyelesaikan bagian izin dari masalah ini. Setelah ini, ssh -vT [email protected]tidak berhasil. Saya memang perlu menambahkan jalur absolut seperti komentator yang disebutkan di atas. Lalu, itu semua saus.
jungledev
2
Dalam kasus kedua saya lupa kata sandi saya dan saya telah memulihkannya menggunakan help.github.com/articles/how-do-i-recover-my-ssh-key-passphrase
Malder
111

coba ini:

ssh-add ~/.ssh/id_rsa

bekerja untukku

Boltun Oreh
sumber
5
Hai, selamat datang di SO. Tolong jelaskan kode Anda, sehingga sesama pengguna Anda dapat memahami apa yang terjadi. Bersulang.
Cthulhu
4
Ketika Anda me-reboot kunci Anda hilang dan Anda harus 'ssh-menambahkan' lagi.
Louwki
@ Louwki Ya ... itu sangat menjengkelkan. Apakah Anda tahu jalan keluarnya?
Chris Cirefice
3
@ChrisCirefice cukup lakukan ssh-add dengan parameter untuk menambahkannya ke gantungan kunci Anda secara permanen. ssh-add -K ~ / .ssh / [kunci pribadi Anda]
Louwki
1
Dalam kasus saya, izin file salah untuk kunci pribadi. Diperbaiki oleh chmod 600 ~/.ssh/id_rsa, kemudianssh-add ~/.ssh/id_rsa
Morteza Ziyae
39

JAWABAN 2019 untuk macOS Sierra & High Sierra & Catalina:

PS: sebagian besar jawaban lain meminta Anda membuat kunci ssh baru ... tetapi Anda tidak perlu melakukannya :)

Seperti dijelaskan secara rinci di https://openradar.appspot.com/27348363 , macOS / OS X hingga Yosemite digunakan untuk mengingat kunci SSH yang ditambahkan oleh perintahssh-add -K <key>

Jadi, inilah 4 langkah yang harus saya ambil agar bisa berfungsi:

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

2: Tambahkan berikut ini~/.ssh/config

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

3: pastikan untuk menghapus entri gitconfig yang menggunakan pembantu osxkeychain:

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

4: restart terminal Anda agar mulai berlaku.

metakungfu
sumber
3
Jawaban yang bagus, saya akan menyebutkan ini sendiri! Rupanya, OS X 10.12.2 dan yang lebih baru tidak secara otomatis memuat identitas ke ssh-agent (yang menurut saya pribadi adalah keputusan kegunaan yang benar-benar bodoh, tetapi saya memahami implikasi keamanannya). Jadi, Anda perlu memodifikasi konfigurasi SSH untuk memuatnya secara manual. Saya hanya berharap output kesalahan akan lebih mengarah pada solusi, daripada satu jam mencari di internet.
Chris Cirefice
12

Saya telah terjebak beberapa saat pada masalah yang sama, yang akhirnya saya selesaikan.

Masalah saya : Saya tidak bisa melakukan push. Saya bisa memeriksa & melihat remote saya (menggunakan git remote -v), tetapi ketika saya dieksekusi git push origin master, itu kembali: Permission denied (publickey). fatal: Could not read from remote repository.dan sebagainya.

Bagaimana saya menyelesaikannya:

  • Saya menghasilkan kunci menggunakan ssh-keygen -t rsa. Memasukkan nama untuk file kunci (ketika ditanya) tidak berguna.
  • Saya kemudian bisa menambahkan kunci (untuk git) : ssh-add /Users/federico/.ssh/id_rsa, yang berhasil kembaliIdentity added: /Users/myname/.ssh/id_rsa (/Users/myname/.ssh/id_rsa)
  • Saya menambahkan kunci SSH ke github menggunakan halaman bantuan ini .
  • Setelah mencoba semua perintah di halaman bantuan 'Permission ditolak publickey' dari Github, hanya ssh-add -lperintah yang berfungsi / tampak berguna (setelah menjalankan langkah-langkah sebelumnya), itu berhasil mengembalikan kunci saya. Langkah terakhir menunjukkan kepada Anda di mana harus memeriksa kunci publik di halaman GitHub Anda. Dan perintah ini akan membantu Anda memeriksa semua kunci Anda: ls -al ~/.ssh.

Kemudian perintah push akhirnya bekerja!

Saya harap ini akan membantu! Semoga sukses untuk semua.

Fed Zee
sumber
7

Jalankan perintah berikut:

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

Buka akun Github Anda: https://github.com/settings/profile

1) Klik: Kunci SSH dan GPG

2) Kunci SSH Baru dan Meletakkannya di sana

3) Tambahkan Kunci SSH

Selesai!

zouhair khallaf
sumber
Yup - jika Anda telah melalui langkah-langkah lain untuk membuat file id_rsa.pub, salin dan tempelkan baris pbcopy itu, yang menyalin kunci ke clipboard Anda dan ikuti petunjuk @ zouhair - github perlu mengetahui kunci Anda. Khususnya jika Anda menggunakan 2FA.
davidrynn
Saya sedikit bingung karena dokumen saat ini mengatakan git membuat github_rsa / github_rsa.pub. Saya memiliki keduanya di direktori /.ssh saya, tetapi sepertinya saya tidak bisa "mendapatkan izin." Saya telah membuat salinan di direktori yang sama menggunakan id_rsa tetapi tidak berhasil.
Mark Löwe
6

pertama-tama Anda harus masuk ke direktori ssh
untuk jenis perintah berikut di terminal Anda di mac atau apa pun yang Anda gunakan di jendela

cd ~/.ssh

sekarang di ssh di
sini Anda dapat menemukan semua kunci ssh / file yang terkait dengan semua proyek Anda. sekarang, ketik perintah berikut untuk menunjukkan kepada Anda jika ada kunci ssh yang tersedia

ls

ini akan menunjukkan kepada Anda semua ssh yang tersedia, dalam kasus saya ada dua
sekarang, Anda harus memulai agen untuk menambahkan ssh di dalamnya. Untuk jenis ini ikuti perintah

eval "$(ssh-agent -s)"

sekarang last but not least Anda akan menambahkan ssh di agen ini ketik perintah berikut

ssh-add ~/.ssh/your-ssh

menggantikan

ganti your-ssh dengan nama file ssh Anda yang Anda dapatkan dari formulir daftar langkah kedua ls command

Sultan Ali
sumber
5

Ini dapat menyebabkan terminal baru, id agen berbeda. Anda perlu menambahkan kunci pribadi untuk agen

$ ssh-add <path to your private key>
pengguna9253738
sumber
1

Satu elemen tambahan yang saya sadari adalah bahwa folder .ssh biasanya dibuat di folder root Anda di Mac OS X / Users /. Jika Anda mencoba menggunakan ssh -vT [email protected] dari folder lain, itu akan memberi Anda kesalahan bahkan jika Anda telah menambahkan kunci yang benar.

Anda perlu menambahkan kunci lagi (ssh-tambahkan 'jalur yang benar ke id_rsa') dari folder saat ini untuk mengotentikasi berhasil (dengan asumsi bahwa Anda telah mengunggah kunci ke profil Anda di Git)

Cherian Varghese
sumber
1

Ini bekerja untuk saya:
chmod 700 .ssh chmod 600 .ssh/id_rsa chmod 644 .ssh/id_rsa.pub

Kemudian, ketik ini: ssh-add ~/.ssh/id_rsa

Nacho Cornejo
sumber
Saya tidak berpikir pertanyaannya adalah tentang ~/.sshizin. Namun, Anda dapat sangat meningkatkan jawaban Anda dengan menambahkan perintah lengkap (di sini chmod) dan menjelaskan apa yang dilakukannya dan mengapa itu diperlukan.
Robert
0

Setelah berjuang lama saya akhirnya bisa menyelesaikan masalah ini pada Windows, Bagi saya variabel Pengguna env GIT_SSH diatur untuk menunjuk ke

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

yang diinstal bersama dengan WinScp. Saya mengubah titik untuk menggunakan ssh.exe standar yang datang dengan git-scm "C: \ Program Files \ Git \ usr \ bin \ ssh.exe"

Santan
sumber
0

Langkah-langkah untuk BitBucket:

jika Anda tidak ingin membuat kunci baru, SKIP ssh-keygen

ssh-keygen -t rsa 

Salin kunci publik ke papan klip:

clip < ~/.ssh/id_rsa.pub

Masuk ke Bit Bucket: Pergi ke Lihat Profil -> Pengaturan -> Kunci SSH (Pada tab Keamanan) Klik Tambah Kunci, Tempelkan kunci dalam kotak, tambahkan judul deskriptif

Kembali ke Git Bash:

ssh-add -l

Anda harus mendapatkan:

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

Sekarang: git pullharus bekerja

ForeverLearner
sumber
0

Saya mengalami masalah ini setelah memulihkan hard drive dari cadangan.

Masalahku: Saya bisa memeriksa & melihat remote saya (menggunakan git remote -v), tetapi ketika saya mengeksekusi git push origin master, ia kembali: Izin ditolak (publickey). fatal: Tidak bisa membaca dari repositori jarak jauh.

Saya sudah memiliki folder SSH dan kunci SSH, dan menambahkannya melalui Terminal ( ssh-add /path/to/my-ssh-folder/id_rsa) berhasil menambahkan identitas saya, tetapi saya masih tidak bisa mendorong dan masih mendapat kesalahan yang sama. Membuat kunci baru adalah ide yang buruk bagi saya, karena itu terkait dengan izin sangat aman lainnya pada AWS.

Ternyata tautan antara kunci dan profil Github saya rusak.

Solusi: Menambahkan kembali kunci ke Github di Profil> Pengaturan> Kunci SSH dan GPG menyelesaikan masalah.

Juga: Akun saya telah disiapkan otentikasi 2 faktor. Ketika hal ini terjadi, jika Terminal meminta kredensial, gunakan nama pengguna Anda - tetapi BUKAN kata sandi Github Anda. Untuk otentikasi 2-faktor, Anda perlu menggunakan kode otentikasi Anda (bagi saya, ini dihasilkan oleh Authy di ponsel saya, dan saya harus menyalinnya ke Terminal untuk pw).

Debora
sumber