Heroku 'Izin ditolak (publickey) berakibat fatal: Tidak dapat membaca dari kesengsaraan repositori jauh'

139

Saya telah mencari-cari selama berjam-jam mencari solusi untuk masalah saya yang tampaknya mudah untuk diperbaiki. Bukan karena pencarian saya tidak menghasilkan apa-apa, tetapi pencarian saya menemukan begitu banyak solusi yang berbeda-tidak ada yang berhasil.

Bagaimanapun, saya tidak bisa mendorong, menarik, atau mengambil dari repositori Heroku saya dari Mac saya. Setiap upaya memberi saya (seolah-olah itu mengejek saya) kesalahan berikut:

'Izin ditolak (publickey). fatal: Tidak bisa membaca dari repositori jarak jauh. '

Saya sudah mencoba (dan mencoba kembali) untuk memperbaikinya dengan berbagai cara. Seperti yang telah saya katakan, saya telah menghabiskan sebagian besar dari dua hari terakhir mencari jawaban. Berikut adalah beberapa hal yang saya coba:

  • kunci heroku: hapus diikuti oleh kunci heroku: tambahkan
  • Regenerasi kunci ssh sendiri dengan 'ssh-keygen -t rsa'
  • Menghapus direktori .ssh saya, diikuti oleh kunci heroku: clear, diikuti dengan menghasilkan kunci ssh
  • Menghapus aplikasi saya di heroku dan membuatnya kembali (untungnya tidak banyak yang ada di sana)

Saya dapat mengambil dari repositori GitHub saya dengan baik, jadi saya tahu itu bukan konektivitas jaringan (ping heroku juga berfungsi).

Sebagai solusi darurat (yang saya harap tidak berubah menjadi yang permanen), saya telah masuk ke instalan Ubuntu Amazon AWS ec2 saya. Menarik dan mendorong ke dan dari Heroku bekerja dengan sempurna. Untuk alasan ini, saya masih merasa seolah-olah masalahnya terletak pada kunci ssh pada Mac saya. Kedua kunci muncul di bawah akun Heroku saya. Apakah alamat email di akhir masalah utama?

EDIT: Saya bisa mendorong dan menarik dari GitHub baik-baik saja (saya tidak menggunakan ssh), jadi mengapa tidak Heroku?

Pada titik ini saya bersedia mencoba apa saja. Terima kasih!

otak besar
sumber
Apakah Anda menetapkan frasa sandi ke kunci heroku Anda? Dan saya kira ini ( stackoverflow.com/a/16753800/6309 ) tidak membantu? Atau periksa ulang stackoverflow.com/a/16753800/6309
VonC
Sayangnya masih menolak untuk bekerja.
thebradbain
kadang-kadang ini terjadi ketika heroku dalam pemeliharaan: status.heroku.com
Mavis

Jawaban:

284

Saya tahu ini sudah dijawab. Tetapi saya ingin menambahkan solusi saya karena ini dapat membantu orang lain di masa depan.

Sebuah kesalahan kunci umum adalah: Permission denied (publickey). Anda dapat memperbaikinya dengan menggunakan keys:adduntuk memberi tahu Heroku tentang kunci baru Anda.

Singkatnya, ikuti langkah-langkah ini: https://devcenter.heroku.com/articles/keys

Pertama, Anda harus membuat kunci jika tidak memilikinya:

ssh-keygen -t rsa

Kedua, Anda harus menambahkan kunci ke Heroku:

heroku keys:add
Kris Hollenbeck
sumber
2
Terima kasih kris, Seseorang dari masa depan :) ini bekerja untuk saya
Ahmad Ajmi
8
kunci heroku: add tutorial saya terjawab saya kira ... terima kasih! :)
Ole Henrik Skogstrøm
Kuncinya hanya harus dihasilkan jika Anda tidak memiliki satu alredy, dalam kasus saya saya alredy memiliki kunci dan hanya perlu menambahkan kunci ke heroku
joseramonc
4
Yang pertama tidak perlu. heroku keys:addakan membantu Anda membuatnya jika Anda tidak memiliki kunci.
Mygod
Jalankan ssh-keygen -t rsajika RSAtidak dihasilkan jika heroku keys:addtidak cukup
Volatil3
122

Saya hanya berpikir saya akan membagikan bahwa saya menemukan jawaban untuk pertanyaan saya sendiri.

Menuliskan masalah saya membuatnya semakin jelas bagi saya, dan saya menyelidiki lebih jauh di mana saya pikir masalahnya terletak: kunci ssh

Ternyata saya benar. Masalahnya bukan dengan kunci itu sendiri, tetapi saya tidak menambahkannya ke daftar kunci ssh yang dikenal di Mac lokal. Jadi walaupun akun Heroku saya telah mengunggah kunci yang benar, Mac saya tidak dapat mengautentikasi karena itu tidak dapat menemukan kunci itu di komputer saya. Solusinya?

ssh-add ~/.ssh/id_rsa
#and, to confirm it's been added to the known list of keys
ssh-add -l

Saya ingin memberikan kredit kepada https://help.github.com/articles/error-permission-denied-publickey karena menjadi referensi yang bagus.

otak besar
sumber
5
Terima kasih atas tanggapan Anda, lebih akurat untuk situasi Anda daripada komentar awal saya. +1
VonC
4
Pada Windows, Anda harus memulai Git Bash(klik kanan folder), dan memulai ssh-agentyang dimungkinkan dengan menjalankan `ssh-agent`(ingatkan kembali-tik) dan kemudian tambahkan kunci seperti dijelaskan di atas. Saya harus melakukan ini setiap kali memulai Git Bash/ ssh-agent, ia lupa apa yang ditambahkan.
TWiStErRob
Saya melakukan ini dan itu masih tidak berhasil. Saya akhirnya harus menambahkan variabel lingkungan yang disebut HOME set ke direktori folder .ssh saya berada di
Justin
Terima kasih - tidak akan pernah tahu ini!
Mark Hansen
Ini memperbaiki masalah saya, bukan jawaban yang lebih tinggi, terima kasih :)
Ryan Brodie
31

Saya memiliki kesalahan yang sama persis (pada windows 7) dan penyebabnya berbeda. Saya menyelesaikannya dengan cara yang berbeda jadi saya pikir saya akan menambahkan penyebab dan solusi di sini untuk orang lain.

Meskipun kesalahan itu sepertinya menunjuk pada heroku, kesalahan itu sebenarnya mengatakan "Heroku can't get to the git repository". Saya bersumpah saya memiliki kunci yang sama di semua server karena saya membuatnya dan mengunggahnya satu per satu pada saat yang sama.

Setelah menghabiskan hampir sehari untuk ini saya menyadari bahwa karena git hanya menunjukkan sidik jari dan bukan kunci yang sebenarnya. Saya tidak dapat memverifikasi bahwa kunci itu cocok dengan yang ada di HD atau heroku saya. Saya mencari di file host yang dikenal dan coba tebak ... itu menunjukkan kunci untuk setiap server dan saya dapat dengan jelas melihat bahwa kunci publik git dan heroku tidak cocok.

1) Saya menghapus semua file di folder kunci saya, kunci dari github menggunakan situs web mereka, dan kunci dari heroku menggunakan git bash dan perintah heroku keys:clear

2) Ikuti instruksi github di sini untuk menghasilkan pasangan kunci baru dan mengunggah kunci publik ke git

3) gunakan git bash- heroku keys:add untuk mengunggah kunci yang sama ke heroku.

Sekarang git push heroku masterbekerja.

sungguh mimpi buruk, semoga ini membantu seseorang.

Bryan

Bryan Myers
sumber
1
Memeras otak saya sampai saya melihat posting Anda. Begitu saya membuat kunci git dan heroku sama, semuanya baik-baik saja. Tetapi tidak mengerti mengapa mereka harus sama.
Kishore Masand
Terima kasih atas jawaban yang dihabiskan selama bertahun-tahun dengan masalah ini
Ivan Bacher
tautan dokumentasi git yang sangat berguna, semuanya berfungsi sempurna
HotJard
Ini berhasil bagi saya setelah beberapa hari mencoba mencari tahu. Saya heran Heroku bisa tetap berbisnis dengan masalah kegunaan yang tidak menyenangkan ini. Seharusnya ada cara yang lebih mudah untuk melakukan ini.
Luke F.
Terima kasih. Bekerja untuk saya; hanya satu hal: di tautan github di suatu tempat mengatakan untuk melakukan "ssh-add". Di sana saya punya masalah, tetapi saya telah menemukan solusinya di sini: stackoverflow.com/questions/17846529/…
Alin Ciocan
17

Masalah yang saya alami adalah saya hanya menggunakan https untuk akun GitHub saya. Saya perlu memastikan bahwa akun GitHub saya disiapkan untuk akses ssh dan bahwa GitHub dan heroku keduanya menggunakan kunci publik yang sama. Inilah langkah-langkah yang saya ambil:

  1. Arahkan ke direktori ~ / .ssh dan hapus id_rsa dan id_rsa.pub jika ada. Saya mulai dengan kunci baru, meskipun mungkin tidak perlu.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. Ikuti langkah-langkah di gitHub untuk menghasilkan kunci ssh
  3. Masuk ke heroku, buat situs baru dan tambahkan kunci publik Anda:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master
    
sjking
sumber
6

saya memiliki kasus yang sama di linux ubuntu dan baru saja memperbaikinya, sepertinya OS bingung antara /root/.ssh/ dan home / user / .ssh / dir, yang saya lakukan adalah:

  1. menghapus semua kunci dari direktori root dan home / user .shh.
  2. membuat kunci baru pastikan untuk memperhatikan jalur penciptaan (/home/you/.ssh/id_rsa) atau (/root/.ssh/id_rsa)
  3. periksa kunci heroku heroku keys
  4. jika kunci di sana jelas heroku keys:clear
  5. heroku keys:addsekarang di sini jika heroku tidak dapat menemukan kunci dan diminta untuk menghasilkan tidak benar, dan ini berarti Anda memiliki masalah yang sama seperti milik saya, lakukan perintah add seperti ini heroku keys:add /root/.ssh/id_rsa.pubjalan yang akan Anda tambahkan akan menjadi yang Anda dapatkan dalam langkah 2.
  6. coba git push heroku mastersekarang
oqx
sumber
3

Cara saya di Windows 8

  1. Tambahkan direktori dengan ssh-keygen ke variabel PATH sistem, biasanya C: \ Program Files (x86) \ Git \ bin

  2. Buka CMD, buka C: \ Users \ Me \

  3. Hasilkan kunci SSH ssh-keygen -t rsa

    Masukkan file untuk menyimpan kunci (//.ssh/id_rsa): .ssh / id_rsa (ubah jalur yang salah default ke .ssh / somegoodname_rsa)

  4. Tambahkan kunci ke Heroku heroku keys:add

    Pilih kunci yang dibuat dari daftar

  5. Buka direktori aplikasi Anda, tulis beberapa kode indah

  6. Init a git repo git init git add . git commit -m 'chore(release): v0.0.1

  7. Buat aplikasi Heroku heroku create

  8. Sebarkan aplikasi Anda git push heroku master

  9. Buka aplikasi Anda heroku open

Ivan Rave
sumber
2

Punya masalah serupa, dan mencoba banyak hal. Pada akhirnya yang berhasil bagi saya, adalah menginstal Gnu di Windows ( https://github.com/bmatzelle/gow/releases ), dan memastikan bahwa Gnu menggunakan alat ssh di dalam direktori tersebut dan bukan dengan Git. Setelah diinstal uji dengan (pastikan jika di lingkungan Anda PATH yang mendahului Git \ bin)

C:\Git\htest2>which ssh
C:\Program Files (x86)\Gow\bin\ssh.BAT

Saya menggunakan dempul dan kontes seperti yang dijelaskan di sini: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-putty-plink-pageant/

Setelah kunci dikirim ke heroku (kunci heroku: tambahkan c: \ Users \ Person.ssh \ id_rsa.pub), gunakan

ssh -v <username>@heroku.com 

dan memastikan bahwa tumpukan Anda menunjukkan penggunaan Putty - yaitu tumpukan yang berfungsi:

Looking up host "heroku.com"
Connecting to 50.19.85.132 port 22
Server version: SSH-2.0-Twisted
Using SSH protocol version 2
**We claim version: SSH-2.0-PuTTY_Release_0.62**
Using Diffie-Hellman with standard group "group1"
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-rsa 2048 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "*--ommitted for security--*".
**Trying Pageant key #0**
Authenticating with public key "rsa-key-20140401" from agent
Sending Pageant's response
Access granted
Opened channel for session
Server refused to allocate pty
Server refused to start a shell/command
FATAL ERROR: Server refused to start a shell/command

Yang berjalan sebelumnya dan gagal:

C:\Git\htest2>ssh -v <username>@[email protected]
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Connecting to heroku.com [50.19.85.156] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Person/.ssh/identity type -1
debug1: identity file /c/Users/Person/.ssh/id_rsa type 1
debug1: identity file /c/Users/Person/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version Twisted
debug1: no match: Twisted
debug1: Enabling compatibility mode for protocol 2.0
**debug1: Local version string SSH-2.0-OpenSSH_4.6**
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Host 'heroku.com' is known and matches the RSA host key.
debug1: Found key in /c/Users/Person/.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: 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: /c/Users/Person/.ssh/identity
debug1: Offering public key: /c/Users/Person/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Trying private key: /c/Users/Person/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
pengguna3484361
sumber
Untuk mengatakan ini menggunakan Windows 8 (8.1). Sepertinya juga alat ssh GoW adalah kuncinya, karena saya bisa menggunakannya tanpa potongan dempul, dan menggunakan ssh-keygen.
user3484361
2

Anda perlu membuat kunci ssh baru dengan mengetik berikut ini - ssh-keygen -t rsa

Maka Anda perlu menambahkan: - kunci heroku: tambahkan

Lalu jika Anda mengetik - heroku terbuka

Masalahnya sudah diatasi.

Itu berhasil bagi saya, Anda bisa mencobanya ...

nabin
sumber
2

Saya mendapatkan kesalahan yang sama, dan karena saya memiliki 4 ssh-keys, jadi saya mencoba mengikuti:

ssh-keygen -t rsa
heroku keys:add

kemudian, empat opsi menunjukkan:

1) github_rsa.pub
2) id_boot2docker.pub
3) id_rsa.pub
4) sshkey.pub

Saya memilih 3), yang terbaru

Lalu, saya memperbaiki kesalahan.

rocLv
sumber
1

Saya menggunakan metode ini untuk menyelesaikan masalah ini. Mungkin Anda bisa mencobanya

"Aktifkan ssh-agent"

  1. Unduh git

http://git-scm.com/

  1. Pasang itu

  2. Aktifkan ssh-agent

C: \ Program Files \ Git \ cmd

start-ssh-agent

Pesan disapper setelah agen saya diaktifkan Semoga ini akan membantu Anda

徐啟倫
sumber
1

Saya ingin menambahkan solusi lain karena saya tidak melihatnya di sini. Masalah saya adalah bahwa heroku terhubung ke url yang salah (karena saya terus bermain-main dengan nama url). Mengedit url jarak jauh memecahkan masalah saya:

git remote set-url heroku <heroku-url-here>
ytv
sumber
0

Saya memiliki masalah yang sama. Dan saya mencoba mengatur ulang kunci saya seperti yang dikatakan semua orang, tetapi masih tidak berhasil. Karena itu karena saya mengganti nama aplikasi.

Jadi yang saya lakukan adalah mengatur ulang kunci saya dan juga mengganti nama aplikasi dari konsol. Periksa pertanyaan ini untuk informasi lebih lanjut: Masalah aplikasi push Heroku

Alin Ciocan
sumber
0

SO So So so simple solution, buka c: /Users/user_name/.ssh/ dan hapus semua pasangan kunci pub / private, dengan cara ini heroku akan menghasilkan kunci untuk Anda.

00imvj00
sumber
0

Saya memiliki kesalahan heroku ssh serupa yang tidak bisa saya selesaikan.

Sebagai solusinya, saya menggunakan fitur heroku http-git baru (transportasi http untuk "heroku" jarak jauh alih-alih ssh). Detail di sini: https://devcenter.heroku.com/articles/http-git

(Versi singkat: jika Anda memiliki proyek yang telah menyiapkan cara standar, jalankan heroku git: remote --http-init untuk mengubah remote "heroku" menjadi http.)

Pekerjaan cepat yang baik jika Anda tidak punya waktu untuk memperbaiki / memecahkan masalah ssh.

FullTimeCoderPartTimeSysAdmin
sumber
Dalam kasus saya, masalah ini tampaknya terkait dengan ":" di jalur jauh ssh. (Git 1.9.4 untuk windows.) Untuk beberapa alasan ssh: // git @ host: repo gagal dengan "fatal: Tidak dapat membaca dari repositori jarak jauh" sementara ssh: // git @ host / repo "berhasil.
FullTimeCoderPartTimeSysAdmin