"ERROR: Izin ke .git ditolak untuk pengguna" dari Git yang terkenal

118

Saya telah mencoba googling dan membaca https://help.github.com/en/articles/connecting-to-github-with-ssh dan berbagai, berbagai panduan. Saya tidak dapat git push -u origin masteratau git push origin master(perintah yang sama).

Saya sudah memiliki akun git saya setidaknya selama 2 tahun atau lebih. Saya telah berhasil membuat repo dan push -u origin masterfine di laptop saya tetapi di desktop ini saya mengalami masalah.

Inilah yang saya coba:

1. Saya telah menyiapkan nama pengguna git saya

2. Saya telah menyiapkan email pengguna git saya

3. Saya telah mengupload konten /home/meder/.ssh/id_rsa.pub saya ke halaman akun github. Saya telah memverifikasi bahwa saya tidak menempelkan spasi kosong apa pun

4. Saya telah membuat ~ / .ssh / config dengan konten berikut:

  Host github.com
  User git
  Hostname github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

Saya telah mengubah .ssh ke 700, id_rsa 600

5. Saya telah menambahkan asal jarak jauh yang tepat tanpa membuat kesalahan ketik :git remote add origin [email protected]:medero/cho.git

6. Untuk mengkonfirmasi # 5, berikut adalah .git / config saya. Direktori tersebut benar dan bukan direktori lain:

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = [email protected]:medero/cho.git

7. ssh [email protected] -v memberi saya Otentikasi yang berhasil

8. Satu hal yang aneh adalah, nama pengguna yang menyapaku telah tditambahkan ke dalamnya. Nama pengguna github saya adalah medero, bukan medert.

Hai mederot! Anda berhasil mengautentikasi, tetapi GitHub tidak menyediakan akses shell.

9. Saya tidak berada di belakang proxy atau firewall

10. Kunci ditawarkan, berikut output dari -v:

debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/meder/.ssh/known_hosts:58
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/meder/.ssh/id_rsa
debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: { some stuff, dont know if i should share it

debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Authentication succeeded (publickey).

11. Berikut adalah perintah yang saya gunakan

mkdir cho
git init
touch README
git add README
git commit -m 'test'
git remote add origin [email protected]:medero/cho.git
git push -u origin master

12. Saya tidak ingin membuat kunci SSH baru.

13. Jika saya melakukan git clone menggunakan ssh dan melakukan edit, commit, dan git push, saya mendapatkan hal yang persis sama.

14. Inilah kesalahan sebenarnya:

$ git push
ERROR: Permission to medero/cho.git denied to mederot.
fatal: The remote end hung up unexpectedly

15. Saya telah menyiapkan nama pengguna github dan token github saya:

$ git config --global github.user medero $ git config --global github.token 0123456789yourf0123456789tokenSetel token GitHub untuk semua instance git di sistem

16. Saya telah mengonfirmasi bahwa nama pengguna github saya TIDAK mederotdan token github saya BENAR per halaman akun saya (2 karakter pertama dan 2 karakter terakhir tervalidasi).

17. Untuk mengkonfirmasi # 16, ~ / .gitconfig berisi

[github]
    token = mytoken...
    user = medero

18. Saya melakukannya ssh-key add ~/.ssh/id_rsajika itu perlu ...



TEORI:

Saya curiga ada sesuatu yang mencurigakan karena ketika saya mendapatkan otentikasi ssh, sapaan pengguna adalah mederotdan bukan medero, yang merupakan akun saya. Mungkinkah sesuatu di akun github saya mungkin salah di-cache?

Saya juga mencurigai beberapa keanehan caching lokal ssh karena jika saya mv ~/.ssh/id_rsa KAKAdan mv ~/.ssh/id_rsa.pub POOPOO, dan melakukannya ssh [email protected] -v, itu masih mengotentikasi saya dan mengatakan itu melayani /home/meder/.ssh/id_rsa saya ketika saya mengganti namanya ?! Itu harus di-cache ?!

meder omuraliev
sumber
Saya menggunakan "Github untuk Windows" dan mengalami masalah serupa saat beralih di antara dua akun Github. Inilah solusi saya: stackoverflow.com/questions/18565876/…
Alisa
Jika Anda ingin mendorong dari 2 repo lokal yang berbeda ke repo jarak jauh asal yang sesuai, periksa ini: stackoverflow.com/q/63291726/12033855
an4s911

Jawaban:

35

Pada langkah 18, saya anggap maksud Anda ssh-add ~/.ssh/id_rsa? Jika demikian, itu menjelaskan hal ini:

Saya juga mencurigai beberapa keanehan cache ssh lokal karena jika saya mv ~ / .ssh / id_rsa KAKA dan mv ~ / .ssh / id_rsa.pub POOPOO, dan melakukan ssh [email protected] -v, itu masih mengotentikasi saya dan mengatakan itu berfungsi /home/meder/.ssh/id_rsa saya ketika saya mengganti namanya ?! Itu harus di-cache ?!

... karena ssh-agentsedang menyimpan kunci Anda.

Jika Anda melihat GitHub, ada akun mederot . Apakah Anda yakin ini tidak ada hubungannya dengan Anda? GitHub tidak boleh mengizinkan kunci publik SSH yang sama untuk ditambahkan ke dua akun, karena saat Anda menggunakan [email protected]:...URL, GitHub mengidentifikasi pengguna berdasarkan kunci SSH. (Bahwa ini seharusnya tidak diizinkan dikonfirmasi di sini .)

Jadi, saya curiga (dalam penurunan urutan kemungkinan) bahwa salah satu kasus berikut ini:

  1. Anda telah membuat akun mederot sebelumnya dan menambahkan kunci SSH Anda ke dalamnya.
  2. Orang lain telah mendapatkan salinan kunci publik Anda dan menambahkannya ke akun mederot GitHub.
  3. Ada bug yang mengerikan di GitHub.

Jika 1 bukan masalahnya maka saya akan melaporkan ini ke GitHub, sehingga mereka dapat memeriksa sekitar 2 atau 3.

Lebih:

ssh-add -l periksa apakah ada lebih dari satu nama jika ya, hapus dengan ssh-add -d "file kunci itu"

Mark Longair
sumber
Sangat membantu Mark! Ini memperbaikinya untuk saya juga.
Leachy Peachy
Ini dia. Anda menyelamatkan saya dari sakit kepala besar. Sekarang saya hanya harus ingat untuk menjalankan ssh-add ...setiap kali saya ingin mengganti login github / ssh saya.
Cerin
Untuk beberapa alasan ssh-add -d <keyfile>tidak berhasil. (Menghapus file secara manual.) Caching yang Anda sebutkan harus dimuat ulang secara manual. Bagaimana?
not2qubit
ssh-add -d-> "Tidak dapat membuka koneksi ke agen otentikasi Anda."
alex
The ssh-addadalah sedikit yang melakukannya untuk saya. Terima kasih!
rayryeng
160

Setelah Googling selama beberapa hari, saya menemukan ini adalah satu-satunya pertanyaan yang mirip dengan situasi saya.

Namun, saya baru saja menyelesaikan masalahnya! Jadi saya meletakkan jawaban saya di sini untuk membantu orang lain yang mencari masalah ini.

Inilah yang saya lakukan:

  1. Buka "Keychain Access.app" (Anda dapat menemukannya di Spotlight atau LaunchPad)

  2. Pilih "Semua item" di Kategori

  3. Telusuri "git"

  4. Hapus setiap item lama & aneh

  5. Coba Dorong lagi dan itu BERHASIL

Alice Chan
sumber
17
Jempol sobat. Anda seorang pahlawan.
Pangeran Bansal
1
Sial ya, akhirnya, setelah berjuang dengan kunci SSH yang tak terhitung jumlahnya, ini adalah jawaban yang berhasil! Sepertinya akses Mac dan https menggunakan Keychain. Gila.
Patrick Chu
1
BLESS YOU IVE SUDAH MENCOBA UNTUK MEMECAHKAN INI SELAMA MINGGU
Jon Hendershot
1
Terlihat sangat membantu, tetapi tidak jelas apa old & strange. Apakah saya akan mengacaukan banyak hal ..?
geotheory
1
@geotheory old & strangeArtinya item tanggal lama dan email atau nama pengguna salah. Anda dapat mengurutkan tabel berdasarkan Date Modified.
Alice Chan
91

Jika masalah datang di windows, hapus Kredensial dari riwayat Windows.

  • Buka Manajer Kredensial
  • Buka Kredensial Windows
  • Hapus entri di bawah Kredensial Generik
  • Coba sambungkan lagi Kali ini, Anda akan diminta memasukkan nama pengguna dan kata sandi yang benar.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

hapus kredensial dari git

FAHID
sumber
2
Sempurna. Saya mendapatkan 403 mengakses dengan akun yang tidak saya gunakan lagi. Sekarang terselesaikan.
Anton Epikhin
1
hanya menghapus kredensial github.com sudah cukup bagi saya
Bart De Boeck
Dan di sana Anda dapat mengubah nama pengguna Anda dan apa pun. Itu caranya.
WesternGun
Sebenarnya ini bekerja untuk saya juga, tetapi apa yang akan saya lakukan jika saya memiliki 2 akun yang berbeda?
an4s911
22

Di Mac, jika Anda memiliki banyak info masuk GitHub dan tidak menggunakan SSH, paksa login yang benar dengan menggunakan:

git remote set-url origin https://[email protected]/username/repo-name.git

Ini juga berfungsi jika Anda mengalami masalah saat mendorong ke repositori pribadi.

leanne
sumber
1
Terima kasih, ini berhasil untuk saya. Itu meminta saya untuk memasukkan kata sandi dan saya bisa mendorong setelah saya memberikan kata sandi saya. Sangat dihargai!
piksel
... tapi ini tidak menyelesaikan masalah bagi saya di Windows, hanya di Mac
piksel
... tetapi saran @Fahid di atas untuk membersihkan kredensial pada Windows membantu
piksel
Anda adalah seorang pahlawan.
Vaibhav
Ini adalah jawaban yang benar jika kita memiliki banyak proyek github yang dimiliki oleh akun yang berbeda
Gangadhar JANNU
14

Ini karena konflik.

Hapus semua kunci dari ssh-agent

ssh-add -d ~/.ssh/id_rsa
ssh-add -d ~/.ssh/github

Tambahkan kunci github ssh

ssh-add   ~/.ssh/github

Ini harus bekerja sekarang.

Sarvesh
sumber
3
juga ssh-add -Dmenghapus semua identitas, dapat berguna jika agen mengalami status tidak valid.
Sam
6

Saya menggunakan Mac dan masalah diselesaikan dengan menghapus catatan github dari aplikasi akses rantai kunci: Inilah yang saya lakukan:

  1. Buka "Keychain Access.app" (Anda dapat menemukannya di Spotlight atauLaunchPad)
  2. Pilih "Semua item" di Kategori
  3. Telusuri "git"
  4. Hapus setiap item lama & aneh Coba Dorong lagi dan itu hanya BEKERJA

Langkah-langkah di atas disalin dari @spyar untuk kemudahan.

Deepak Bhatta
sumber
6

Saya menemukan solusinya sama dengan @spyar sediakan yang merupakan aplikasi Keychain Access menyimpan nama pengguna lama.

Ada 2 solusi untuk situasi ini:

  1. Hapus info di Akses Rantai Kunci oleh
    • Buka aplikasi Keychain Access
    • Telusuri github
    • Hapus kredensial yang sesuai

Atau

  1. Jika Anda ingin menggunakan kunci ssh . Anda tinggal mengubah url Repo Anda dari https

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

ke

[email protected]: nama pengguna / repo.git

Semoga ini membantu.

Thuanle
sumber
2

Saya baru-baru ini mengalami masalah ini karena di repo lama di komputer saya yang telah didorong menggunakan https. langkah 5 dan 6 menyelesaikan masalah saya dengan mengatur ulang url jarak jauh untuk repo saya dari menggunakan url https ke url ssh

memeriksa remote menggunakan url https

> git remote -v
origin  https://github.com/ExampleUser/ExampleRepo.git (fetch)
origin  https://github.com/ExampleUser/ExampleRepo.git (push)

kemudian atur ulang asal untuk menggunakan url ssh

> git remote set-url origin [email protected]:ExampleUser/ExampleRepo.git

memverifikasi remote baru

> git remote -v
origin  [email protected]:ExampleUser/ExampleRepo.git (fetch)
origin  [email protected]:ExampleUser/ExampleRepo.git (push)

sekarang bisa berhasil git push -u origin

Saya masih tidak yakin pengaturan apa yang akan saya ubah yang mungkin menyebabkan dorongan gagal ketika remote adalah https tetapi ini adalah solusi untuk masalah saya

PhilVarg
sumber
KESALAHAN: Izin untuk unrealcv / synthetic-computer-vision.git ditolak untuk monajalal. fatal: Tidak dapat membaca dari repositori jarak jauh. Harap pastikan Anda memiliki hak akses yang benar dan repositori ada.
Mona Jalal
1

Saya memiliki masalah yang sama dengan Anda. Setelah sekian lama menghabiskan waktu di Google, saya menemukan kesalahan saya disebabkan oleh beberapa pengguna yang telah menambahkan kunci yang sama di akun mereka.

Jadi, inilah solusi saya: hapus kunci ssh pengguna yang salah (saya dapat melakukannya karena pengguna yang salah juga akun saya). Jika pengguna yang salah bukan akun Anda, Anda mungkin perlu mengubah kunci ssh Anda, tetapi menurut saya ini tidak akan terjadi.

Dan menurut saya masalah Anda mungkin disebabkan oleh kesalahan ketik pada nama akun Anda.

Perth Charles
sumber
0

Masalah ini juga disebabkan oleh:

Jika Anda menggunakan mac / linux, dan menggunakan 'ControlMaster' di ~ / .ssh / config, mungkin ada beberapa proses master kontrol ssh yang sedang berjalan.

Untuk menemukannya, jalankan:

ps aux | grep '\[mux\]'

Dan bunuh yang relevan.

Pesta
sumber
0

Saya juga mengalami ini, apa yang menyebabkan ini bagi saya adalah bahwa saat mengkloning repo yang saya dorong perubahan saya, saya mengambil URL klon dari tab penyamaran tanpa masuk. (Saya masih tidak tahu bagaimana pengaruhnya). Itu karena alasan tertentu menyebabkan git memilih akun pengguna lain. Ketika saya mencobanya lagi dari halaman masuk yang tepat, itu berfungsi seperti biasa untuk saya.

rajoriav
sumber
0

Saya mengalami kesalahan ini saat menggunakan Travis CI untuk menyebarkan konten , yang melibatkan mendorong pengeditan ke repositori.

Saya akhirnya memecahkan masalah ini dengan memperbarui token akses pribadi GitHub yang terkait dengan akun Travis dengan public_repoizin akses cakupan:

Pilih <code> public_repo </code>

ms609
sumber