Git: Izin ditolak (publickey) fatal - Tidak dapat membaca dari repositori jarak jauh. saat mengkloning repositori Git

153

Saya tidak dapat mengkloning repositori Git, dan mendapatkan kesalahan ini:

krishna.soni@KRISHNACHANDRAS /c/Projects $ git clone http://stage.abc.com:10088/pqr
http://<url>/<repository> Cloning into '<repository>'... fatal: could not read Username for 'http://<url>': No such file or directory

Saya sudah membaca Bitbucket, Windows dan "fatal: tidak dapat membaca kata sandi untuk" , tetapi masih memiliki masalah.

Saya melangkah lebih jauh tetapi sekarang saya mendapatkan kesalahan ini

sh.exe": chown: command not found

krishna.soni@KRISHNACHANDRAS /c
$ git clone ssh://[email protected].
/projects
Cloning into 'C:/projects'...
Permission denied (publickey).
fatal: Could not read from remote repository.

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

> krishna.soni@KRISHNACHANDRAS /c
>     $ git clone ssh:<url>
>     ts
>     Cloning into 'C:/projects'...
>     Permission denied (publickey).
>     fatal: Could not read from remote repository.

Please make sure you have the correct access rights

dan repositori ada.

KCS
sumber
Apakah Anda yakin itu repositori git?
gravetii
ya itu . Saya baru git, mendapatkan kesalahan ini saat kloning. Saya menambahkan email dan nama dalam file konfigurasi global menggunakan perintah git config --global user.name "John Doe" $ git config --global user.email [email protected]
KCS
Alasan utama adalah bahwa repo tidak dapat mengenali Anda sebagai pengguna git-server. Bisakah Anda mengakses server melalui ssh?
Малъ Скрылевъ
Jika seseorang mengalami masalah ini saat menggunakan Github, ikuti langkah-langkah yang disebutkan di sini: help.github.com/en/articles/… Ini berhasil untuk saya.
Rounak

Jawaban:

69

Sepertinya masalah izin - bukan masalah Windows 7.

Kunci ssh Anda tidak diotorisasi - Permission denied (publickey).

Anda perlu membuat kunci ssh publik dan meminta administrator repositori Git untuk menambahkan sshkunci publik

Informasi tentang cara melakukan ini: Menyimpan kunci ssh gagal

Zero Pertama
sumber
27
Ini aneh. Repositori itu publik dan saya mengkloning repositori publik. Saya tidak yakin mengapa saya harus meminta izin kepada administrator untuk mengkloning repositori publiknya yang di-host di Github.
Shailen
5
Ya, itu salah, Anda tidak perlu bertanya apa-apa pada administrator, ini masalah dengan git lokal.
Ivan Castellanos
3
Mengapa ini sulit? Saya berhasil tetapi tidak menyakitkan.
Niklas R.
9
Anda tidak perlu mengotorisasi kunci untuk repo publik, cukup gunakan protokol HTTPS: stackoverflow.com/a/33072867/1385678
Diego V
225

Untuk orang-orang yang datang ke sini yang hanya mencoba untuk mendapatkan repositori tetapi tidak peduli dengan protokol (ssh / https), Anda mungkin hanya ingin menggunakan https alih-alih ssh (jika didukung).

Jadi misalnya Anda gunakan

git clone https://github.com/%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

dari pada

git clone [email protected]:%REPOSITORYFOLDER%/%REPOSITORYNAME%.git
Arjan
sumber
6
Ini adalah paket cadangan yang paling tepat jika izin ssh tidak terselesaikan atau Anda ingin melewati bagian itu.
Wahib Ul Haq
13
Jawaban ini mengubah mekanisme dari sshmenjadi https. Itu tidak menyelesaikan masalah asli dengan menggunakan ssh untuk mengakses repositori. Saya bertanya-tanya bagaimana ini dapat terus diangkat sebagai jawaban yang baik untuk pertanyaan itu. Jawaban lain di bawah ini menyelesaikannya dengan benar.
Armin
3
Masalah aslinya adalah pemula git yang mencoba mengkloning repo. Jika tujuannya adalah untuk menarik repo publik, ini adalah jawaban efektif tercepat.
Vivek Chavda
Terima kasih telah menyelamatkan saya dari bunuh diri. By the by, ini dapat digunakan untuk repo pribadi mengingat Anda memiliki nama pengguna dan kata sandi.
BILL WAGNER
81

Jika masih ada masalah seputar akses setelah membuat SSH dan menambahkannya di akun Bitbucket Anda atau di mana pun, Anda perlu melakukan hal berikut di terminal di GitBash, OSX atau Linux:

# Lists already added identities (‘ssh keys’)
ssh-add -l

Kemudian, jika Anda tidak melihat kunci Anda tercantum, tambahkan dengan yang berikut (ganti identitydengan nama aslinya):

# Add a new identity
ssh-add ~/.ssh/identity

Ini berhasil untuk saya.

Kondaparthy Srikanth
sumber
3
ssh-add ~/.ssh/identityreturn error/Users/lee/.ssh/identity: No such file or directory
lee
14
Menjalankan "ssh-add" dari "~ / .ssh" (dan memasukkan frasa sandi untuk file "~ / .ssh / id_rsa" saya saat diminta) menyelesaikan masalah untuk saya.
James Furey
1
Saya bisa menarik repo saya tetapi tidak mendorong tanpa melakukan ini, tepuk tangan!
Dimitar Nestorov
@james Furey menjawab membantu saya sumber untuk mengidentifikasi ssh url sebagai repo git.
Penggemar YSR
2
bekerja untuk saya ... setelah berjam-jam berkeringat dan mencoba berbagai hal. Satu-satunya hal yang bukan identitas pada akhirnya gunakan nama di sistem Anda sendiri. Pergi ke folder .ssh dengan melakukan perintah cd di terminal dan kemudian ketik perintah 'ls' di terminal. Dan kemudian memutar ulang "identitas" dari perintah di atas dengan file Anda sendiri. Pergi ke terminal sourcetree dan: cd ~lalu cd .sshkemudian ls(salin nama tanpa ekstensi .pub) lalu (jalankan perintah ini)ssh-add ~/.ssh/(copied name)
Tejas
21

Saya menghadapi masalah yang sama dengan GitHub . Inilah cara mengatasinya!

  1. Hasilkan kunci SSH di komputer Anda seperti dijelaskan di sini: Menghasilkan kunci SSH .
  2. Login akun GitHub Anda: Login GitHub .
  3. Di akun Anda, tambahkan Kunci SSH yang baru dibuat: Kunci SSH akun saya .
  4. Coba lagi ke git cloneproyek.
Maxime
sumber
Bekerja seperti pesona !!
Prakhar
1
Saya sekarang menggunakan jawaban ini pada 3 sistem operasi baru dalam 5 tahun terakhir dan ini berfungsi dengan baik setiap saat.
kotoole
Rupanya High Sierra mengharuskan pengguna untuk mendaftarkan kunci dalam file .ssh / config. El Capitan entah bagaimana berhasil tanpanya.
dsomnus
14

Saya mengalami masalah ini di Mac - ketika saya mengatur SSH dengan benar untuk mengakses repositori Git saya, setelah dimulai ulang (dan beberapa saat Mac mengalami kebuntuan), semua kredensial saya dihapus. Rupanya, karena alasan tertentu kunci pub diatur ke 644 yang menyebabkannya dihapus dari gantungan kunci. Untuk membaca:

  • chmod 600 kunci publik
  • ssh-add ~/.ssh/[your private key]- ini akan menampilkan identitas yang telah ditambahkan. File kunci yang Anda inginkan adalah file tanpa ekstensi .pub.
  • ssh-add -l akan menunjukkan kepada Anda identitas yang baru ditambahkan

sunting: tampaknya MacOS memiliki kecenderungan untuk menghapus kunci - setelah mengunduh pembaruan High Sierra (tapi saya belum menginstalnya) kunci saya telah dihapus dan saya harus menambahkannya lagi melalui ssh-add

eithed
sumber
2
Solusi ini masih akurat setelah Anda memutakhirkan macOS High Sierra ke Versi 10.13.1. Secara khusus, Sourcetree adalah aplikasi yang memunculkan masalah ketika saya mencoba mendorong komit ke repositori jarak jauh. Langkah-langkah di atas memperbaiki masalah untuk saya.
Paul Bonneville
Saya memiliki masalah ini pada 10.13.4 dan solusi ini berhasil untuk saya.
Andrew Ebling
11

Saya juga menghadapi masalah yang sama. Saya melakukan yang berikut dan itu berhasil untuk saya:

  1. Hasilkan Kunci dari klien GIT GUI di Windows. Salin kunci ini ke clipboard.
  2. Buka akun Anda di bitBucket/situs web git, dan tambahkan kunci ini ke profil Anda. Dengan cara ini, server tahu bahwa Anda adalah pengguna yang sah yang mengakses dari sistem yang sah.
  3. Itu dia. Semua perintah push bekerja untuk saya selanjutnya.
Ashwin Tumma
sumber
Ini membantu saya melihat bahwa saya telah menghasilkan RSA saya tanpa menjalankan Git Bash sebagai Administrator yang menempatkan kunci RSA saya di drive "h": oops:
tylerlindell
7

Bagi saya, ketika saya ingin mengkloning dari repositori saya, saya memiliki pesan yang sama sebelum "Permission ditolak (publickey) fatal: Tidak dapat membaca dari repositori jauh". Solusi untuk kasus saya adalah tidak menggunakan sudo sebelum mengkloning. Itu saja.

mustapha
sumber
Terima kasih banyak @ mustapha Anda benar-benar menghemat waktu saya.
vinay kumar
7

Github (atau Bitbucket) tidak dapat menemukan kunci ssh Anda di server mereka.

Cukup tambahkan kunci Anda di pengaturan akun Anda.

jsxqf
sumber
6

Jika Anda menghasilkan kunci ssh publik baru dan memasukkannya ke bitbucket atau github dan

itu tidak membantu - silakan coba restart PC Anda . Itu membantu saya !!

nicolas asinovich
sumber
Terima kasih, ini yang perlu saya lakukan juga.
Steph
Saya harus menutup terminal dan membuka yang baru untuk melihatnya berfungsi.
rahul
5

Anda perlu membuat kunci ssh baru dengan menjalankan ssh-keygen -t rsa.

Biniam
sumber
Referensi @ Joel Heroku dihapus. Terima kasih
biniam
4

Saya mendapat kesalahan ...

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

... ketika saya mencoba melakukan kontak dari prompt Git Bash ke Bitbucket setelah laptop saya mati karena pembaruan Windows 10 yang buruk dan dikembalikan ke pengaturan pabrik. Saya telah memulihkan semua file ssh saya dari cadangan.

Penyebab kesalahan ternyata tidak cocok dalam nama akun Windows saya setelah komputer dibangun kembali. Saya belajar bahwa file kunci publik id_rsa.pubdiakhiri dengan string yang mudah dibaca yang terdiri dari nama akun Windows saya diikuti dengan @tanda dan kemudian nama komputer.

Ketika saya awalnya mengatur komputer saya, saya membuat nama akun Windows saya termasuk inisial tengah saya tetapi ketika komputer saya reset ke pengaturan pabrik, orang DevOps baru kami membuat nama akun saya tanpa inisial tengah saya.

Untuk mengatasi masalah ini, saya cukup mengedit file kunci publik saya id_rsa.pubdan menghapus inisial tengah di nama saya di akhir. Saya terjebak dengan nama komputer yang sama sehingga tidak masalah. Saya menyalin konten file ke clipboard Windows. Saya kemudian masuk ke Bitbucket, pergi ke Pengaturan Bitbucket di bawah avatar saya, dan menambahkan kunci publik baru tempat saya menempelkan konten baru.

Kembali ke prompt Git Bash, saya mengkonfirmasi bahwa sekarang berhasil dengan memasukkan perintah ...

ssh -T [email protected]

... dan saya mendapat kembali pesan bahwa saya masuk.

Ken A Collins
sumber
4

Di macOS / Linux (Ubuntu):

1. Untuk Otentikasi, Anda perlu menambahkan bagian publik dari pasangan kunci SSH Anda ke bitbucket dari dalam pengaturan pengguna Anda: Pengaturan Pengguna -> kunci SSH

Anda akan menemukan bagian publik tersebut di direktori ~ / .ssh Anda, biasanya id_rsa.pub. catat .pubbagian dari nama file untuk Publik. itu akan membantu Anda menghasilkan satu jika Anda belum memilikinya

Anda belum selesai ...

2. Anda perlu memberi tahu sistem Anda kunci apa yang digunakan dengan host jarak jauh mana, jadi tambahkan baris ini ke file ~ / .ssh / config Anda

Host bitbucket.org
 IdentityFile ~/.ssh/PRIVATE_KEY_FILE_NAME

Di mana PRIVATE_KEY_FILE_NAMEnama bagian pribadi dari pasangan kunci SSH Anda, jika Anda belum mengacaukannya, biasanya nama standarnya adalah: id_rsa dalam hal ini ganti di PRIVATE_KEY_FILE_NAMEatas dengan id_rsa(kunci pribadi TIDAK memiliki .pubekstensi)

ninjayoto
sumber
Catatan, Anda salah mengeja "Ubuntu" - suntingan harus setidaknya 6 karakter jadi saya tidak dapat menyarankan hasil edit :)
Misha Nasledov
4

Utas yang berguna dan saya tidak membawa banyak hal baru ke meja. Langkah yang saya ambil juga merupakan bagian dari deskripsi yang ditunjukkan Maxime tetapi beberapa orang mungkin mengabaikannya. Bagian ini Menambahkan kunci SSH Anda ke ssh-agent .

Saya sudah membuat kunci ssh saya tetapi setelah reboot saya tidak dapat mengkloning salah satu repositori saya sendiri.

Saya harus memulai ssh-agent dan menambahkan kunci pribadi ke agen ini untuk mengkloning.

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
kometen
sumber
3

Saya menghadapi masalah yang sama saat menjalankan git cloneperintah dari baris perintah windows. Tetapi perintah berhasil dijalankan dari Git Bash .

lazyvab
sumber
3

Saya memiliki masalah serupa. Saya mengubah kunci ssh dan memulai kembali dan mencoba semua solusi 'n' lainnya. Tetapi masalah sebenarnya bagi saya adalah protokol default gitlab kami berubah dari ssh ke https.

periksa url jarak jauh dengan

git remote -v

ubah url jarak jauh

git remote set-url origin https://URL
nantitv
sumber
Ini sempurna, Kita tidak perlu mengkonfigurasi ssh.
Rohit Parte
Saya harus melakukan hal yang sama. Kunci ssh tidak berfungsi untuk saya dalam kasus ini
Dani
fatal: tidak dapat mengakses ' bitbucket.org:xxxxxx/xxxxxxxxt ': Nomor port diakhiri dengan 'r'
nosequeweaponer
2

Jika semuanya gagal, seperti halnya saya, Hapus Instalasi GIT, instal ulang. Untuk beberapa alasan perbaikan ini.

PS

  1. Saya mencoba membuat Kunci dan Pembaruan baru di kunci publik SSH
  2. Juga mencoba menghapus semua kunci dan mencoba membuat kunci baru.
  3. Dan TIDAK, tidak ada yang salah dengan .gitconfig saya
Ronak Agrawal
sumber
2

memperbaiki untuk hubalat cli:

  • git config --global hub.protocol https untuk jangka panjang
  • git remote add OOPS https://github.com/isomorphisms/go.git&& git push OOPSuntuk perbaikan segera

Kesalahan ini terjadi pada hubalat baris perintah karena nilai default hub.protocolgit-config yang salah. Mereka mengatur repo

git://github.com/schacon/ticgit.git

bukannya apa yang sebenarnya diterima github, yaitu https://github.com/schacon/ticgit.git.


Membaca LESS=+/"HTTPS instead" man hubakan menjelaskan dari mana perintah "perbaikan jangka panjang" di atas berasal.

isomorfisma
sumber
Ini menyelamatkan hari saya!
Jay Lee
1

Saat kloning, saya memiliki masalah serupa [ERROR saya: Izin ditolak (publickey). fatal: Tidak bisa membaca dari repositori jarak jauh. Pastikan Anda memiliki hak akses yang benar .. dll]

- Saya menggunakan bitBucket / UBUNTU14.04 dalam kasus saya, tetapi SUDAH memiliki satu set file kunci yang sebelumnya saya buat DAN saya telah mengubah nama file. Saya hanya COPIED file ke format nama id_rsa & id_rsa.pub standar. Saya kemudian menjalankan kembali perintah tanpa masalah.

OBTW : Saya juga bisa menggunakan kata sandi prompt dengan menggunakan klon gaya HTTP.

Jorge de la Torre
sumber
0

Saya punya masalah serupa di linux. Saya memecahkan masalah dengan masuk ke server github dan membuat kunci penyebaran. Itu di bawah pengaturan untuk repositori. Kemudian, saya menyalin dan menempel kunci publik saya (yang biasanya di ~ / .ssh / id_rsa.pub, tetapi konfigurasi Anda mungkin berbeda). Ada kotak centang untuk memberikan akses tulis kunci ini. Klik di atasnya (kecuali Anda menggunakan git untuk menyebarkan saja, dalam hal ini, jangan klik di atasnya).

pengguna1928764
sumber
0

Saya memiliki kesalahan yang sama. Solusi saya adalah keluar dan masuk lagi karena ssh-agent saya tidak sinkron dengan kunci ssh jarak jauh.

Menambahkan ini di sini kalau-kalau ada yang melihat bahwa jawaban lain tampaknya tidak berlaku untuk situasi mereka.

Martlark
sumber
0

Saya menghadapi masalah yang sama saat mengatur ssh untuk gitlab. Saya sudah memiliki ssh untuk githubdan saya tidak bisa menimpanya. Langkah-langkah yang berhasil bagi saya adalah:

  1. Hasilkan SSH dengan jalur baru dan tambahkan ke daftar ssh ssh-add /path/to/new/id_rsa.
  2. Buat file bernama configdengan ~/.ssh/menggunakan. Saya menggunakan vi ~/.ssh/config/.
  3. Tambahkan ini ke file yang baru dibuat

# GitLab.com server Host gitlab.com RSAAuthentication yes IdentityFile /path/to/new/id_rsa

  1. Simpan dan keluar.

Setelah itu restart terminal dan coba dorong, itu akan berhasil

Ishwar Rimal
sumber
0

Jika Anda ingin mengkloning proyek sumber terbuka untuk mengirimkan Permintaan Tarik:

Saya ingin mengkloning proyek open source sehingga saya bisa mengirimkan beberapa permintaan tarik. Masalahnya adalah saya tidak memiliki izin dari pemilik proyek. Tidak masalah, karena niat saya adalah untuk menyerahkan PR, berikut ini adalah alternatif yang bisa digunakan:

Solusi saya:

  1. Repositori Fork

Fork Repo

  1. Kemudian klon dari repositori bercabang Anda. Klon dari Repo bercabang dua

  2. Kerjakan fitur Anda dan kemudian ajukan permintaan tarik.

BKSpurgeon
sumber
0

Anda dapat mencoba menambahkan kunci ssh ke gantungan kunci pribadi Anda. Ini berhasil untuk saya

ssh-add -K ~/.ssh/[your-private-key]
Ankur Kedia
sumber
"opsi tidak dikenal - K"
Jiří Doubravský
0

solusi: Di ​​server Anda mencoba untuk mengkloning atau mendorong dari cat ~ / .ssh / id_rsa.pub Pergi ke GitHub, pengaturan, Kunci SSH dan GPG , kunci tempel kunci SSH baru .

pengguna5854766
sumber
0

Saya melihat kesalahan ini memiliki banyak alasan berbeda. Saya memiliki kesalahan yang sama ketika mencoba untuk mengatur repositori lain secara lokal bersama yang sudah sepenuhnya bekerja dengan ssh dll dan menghubungkannya ke server yang sama, tetapi repositori lainnya. Tidak ada jawaban di sini untuk ditemukan, tetapi saya menemukan jawabannya. Jadi saya mempostingnya. Semoga membantu seseorang.

git remote add origin [email protected]:teamalpha/repositorytwo.git
uldics
sumber
0

jika tidak satu pun dari jawaban ini membantu dan

  1. Anda menggunakan Windows
  2. Anda menghasilkan kunci dengan Putty atau Anda telah menginstal Putty di PC Anda
  3. Anda menghasilkan kunci Anda dengan CMD atau PowerShell

Mencoba

  1. hapus kunci Anda
  2. cari di windows untuk Git Bash, lalu buat kunci baru dengan baris perintah Git Bash
  3. tambahkan kunci publik ke Repo online Anda

Kemudian, Anda akan menemukan setelah git clone dan ketik yes untuk konfirmasi, itu akan mulai mengkloning

Fadeoc Khaos
sumber
-2

Itu mungkin bodoh tapi itu terjadi pada kita:

Jika Anda menggunakan bitbucket dan Sourcetree dan Anda cukup salin tempel URL klon ke dialog repo baru, itu akan menampilkan kesalahan yang sama saat menarik atau mendorong.

Pastikan Anda menghapus hal-hal 'git klon' sebelum URL.

Mijail
sumber