Tidak dapat mendorong ke Heroku karena sidik jari kunci

131

Saya baru mengenal Rails, dan saya mencoba untuk menyebarkan aplikasi yang sangat sederhana ke Heroku. Ini adalah aplikasi kedua yang saya gunakan, dan yang pertama saya bisa melakukannya dengan baik. Namun saya memiliki beberapa masalah dengan ini. Setiap kali saya " git push heroku master ", saya mendapatkan kesalahan ini:

! Kunci Anda dengan sidik jari xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: tidak berwenang untuk> mengakses my_heroku_app.

fatal: Ujung yang jauh menutup secara tak terduga

Saya telah mencoba mengelola kunci saya setelah login di heroku. Jika saya mengetik " kunci heroku " konsol saya , maka saya mendapatkan:

Tidak ada kunci untuk alamat email saya.

Namun, jika saya menjalankan perintah " kunci heroku: tambahkan " saya dapatkan

Ditemukan kunci publik yang ada: /Users/michele/.ssh/id_rsa.pub Mengunggah kunci publik ssh / Pengguna/michele/.ssh/id_rsa.pub! Sidik jari sudah ada. Silakan gunakan satu kunci ssh per akun Heroku

Tolong bantu aku! Ini sangat menyebalkan, saya tidak tahu apa yang salah! Terima kasih

mre
sumber

Jawaban:

288

Saya memiliki masalah yang sama, saya mengikuti pos ini dan yang lainnya dari jenis yang sama tanpa hasil: - ((

Akhirnya, saya menemukan solusinya: Saya harus menambahkan identitas rsa baru saya di mesin saya!

Jadi, pertama-tama saya membuat kunci rsa baru:

ssh-keygen -t rsa -C "giordano.scalzo[at]gmail.com" -f  ~/.ssh/id_rsa_heroku

kemudian menambahkannya ke mesin saya

ssh-add ~/.ssh/id_rsa_heroku

dan, akhirnya, ke Heroku

heroku keys:add ~/.ssh/id_rsa_heroku.pub

Setelah itu,

git push heroku master

bekerja seperti pesona!

Semoga ini membantu.

Giordano Scalzo
sumber
47
Ini sangat dekat bagi saya. Tapi ada satu hal lagi. Saya memiliki dua akun heroku. Yang pertama telah menambahkan kunci SSH default saya untuk mesin saya. Tidak peduli apa yang saya coba perbaiki akun kedua saya, tidak perlu sampai saya menghapus kunci default saya dari akun pertama. SSH-AGEN akan mengirim kunci pertama secara default, menyebabkan masalah ini. Cara mengatasinya adalah membuat kunci spesifik untuk heroku (bukan default) untuk setiap akun
Tom Carchrae
13
Saya memiliki masalah yang sama dengan @TomCarchrae. Saya keluar dari akun yang sepertinya rusak permanen heroku logout, masuk ke akun lain, dan menghapus kunci RSA default dari akun itu. Setelah itu saya bisa mendorong dengan kunci yang baru dibuat ini.
Ross Allen
14
Bagi saya pribadi, saya melakukan yang setara dengan milik ssh-add ~/.ssh/id_rsa_herokusaya ssh-add ~/.ssh/identity.heroku.fookarena saya juga menggunakan https://github.com/ddollar/heroku-accounts (manajer beberapa akun untuk Heroku).
user664833
1
satu hal lagi yang perlu diingat - jika Anda memiliki terlalu banyak kunci SSH, itu tidak akan bisa masuk karena mencoba kunci secara berurutan (dan kemudian Anda dikeluarkan dari login terlalu banyak kegagalan). ini tampaknya menjadi cacat dengan ssh-agent (toh di ubuntu, tapi saya kira implementasi lain juga). jadi, jika Anda mencabut rambut Anda, coba pindahkan direktori ~ / .ssh Anda dan mulai yang baru (Anda dapat menarik kunci satu per satu).
Tom Carchrae
7
Anda dapat memengaruhi kunci mana yang dikirim dengan menambahkan entri host di ~ / .ssh / config untuk heroku.com yang menunjuk ke kunci yang Anda inginkan. Ini adalah perbaikan cepat bagi saya karena terus mencoba menggunakan kunci default saya dan gagal. Ini mungkin tidak akan membantu dalam hal banyak akun.
dnewcome
61

Saya juga memiliki beberapa kunci dan beberapa akun heroku, jadi saya menemukan masalah ini setiap beberapa bulan. Seperti disebutkan Giordano Scalzo, Tom Carchrae, dan user664833, masalah utama adalah ssh-agent, yang Anda kendalikan menggunakan ssh-addperintah. Halaman manual ( man ssh-add) sebenarnya cukup jelas dan ringkas, jadi periksalah.

Anda dapat membuat daftar semua kunci yang diketahui oleh ssh-agent:

ssh-add -l

Anda dapat menghapus semua kunci yang diketahui oleh ssh-agent dengan:

ssh-add -D

Atau hapus kunci tertentu dengan

ssh-add -d ~/.ssh/id_rsa_example_key_file_use_your_own

Jangan khawatir! Anda sebenarnya tidak menghapus kunci, hanya mengubah agen ssh mana yang secara otomatis mencoba untuk digunakan, misalnya, ketika Anda mencoba untuk mendorong ke heroku. Sangat mudah untuk menambah dan menghapus kunci sesuai kebutuhan, jadi bagi saya, ketika saya merasa frustrasi dengan masalah ini, cara termudah untuk memperbaikinya adalah dengan menghapus semua kunci dan menambahkan kembali hanya pada yang ingin saya gunakan saat ini.

ssh-add -D
ssh-add ~/.ssh/id_rsa_example_use_this_one_i_mean_it
towynlin
sumber
1
ini bekerja dengan baik untuk saya, namun mencoba menambahkan kembali kunci ssh default saya terus meminta frasa sandi (di Mtn Lion), jangan pikir saya punya satu? Reboot dan kembali ke ssh default saya semua ok - juga menemukan ini stackoverflow.com/questions/7927750/… yang bekerja dengan baik
house9
menabrak kepalaku ke dinding untuk sementara waktu karena yang ini, dan ini adalah langkah terakhir yang diperlukan - terima kasih!
griswoldbar
Jika Anda mencoba metode pertama maka yang ini, (dan mendapatkan kesalahan Izin Ditolak (publickey) ketika Anda mencoba untuk mendorong ke remote Heroku Anda) Anda mungkin lupa untuk menjalankan kembali kunci heroku: tambahkan perintah. Bagaimanapun, terima kasih banyak! Ini berhasil untuk saya.
Hairgami_Master
38

Komputer Anda memiliki kunci SSH, tetapi kunci SSH itu dikaitkan dengan akun Heroku lain.

Jika Anda perlu menggunakan kedua akun untuk aplikasi yang berbeda di komputer yang sama, Anda harus membuat kunci SSH baru pada mesin Anda dan mengunggahnya ke Heroku:

$ ssh-keygen

Pastikan untuk menyimpannya sebagai '/ Pengguna / Pengguna / .ssh/new_id_rsa.pub' saat diminta meminta Anda.

$ heroku keys:add /Users/User/.ssh/new_id_rsa.pub 

Anda kemudian perlu menambahkan host alternatif untuk heroku.comke Anda ~/.ssh/config:

Host heroku-alt
HostName heroku.com
IdentityFile ~/.ssh/new_id_rsa

Dan kemudian perbarui .git/configdalam proyek Anda untuk menggunakan alias host:

[remote "heroku"]
  url = git@heroku-alt:myapp.git
  fetch = +refs/heads/*:refs/remotes/heroku/*

Dengan memilih antara herokudan heroku-altdi remote .git/configfile proyek tertentu Anda dapat mengelola proyek mana yang menggunakan kredensial mana.

Daniel X Moore
sumber
1
Ya, itu juga masalah bagi saya. Mengakses dua akun Heroku dari klien yang sama. Terima kasih.
Bernard
Saya mencoba untuk melakukan metode ini, tapi "Tuan rumah heroku-alt" memberi saya kesalahan: Host heroku-alt not found: 3(NXDOMAIN). Saya menempatkan ini di terminal di Mountain Lion. ~/.ssh/configjuga tidak ada, hanya sekelompok .pubfile dan satu yang dipanggil known_hosts. Dan ide?
JVG
@ Penarikan Anda harus membuat ~ / .ssh / config dan memasukkan konten yang tercantum dalam jawaban. Ketika Anda selesai menyimpan file dan akan berisi Host, HostNamedan IdentityFilegaris. Maka harus bekerja dengan baik.
Daniel X Moore
3
Luar biasa! Teknik ini sangat elegan!
kinopyo
Pria! Kamu luar biasa. Mengeksekusi langkah demi langkah akhirnya membuat saya lega. Terima kasih !!
softvar
14

Berikut adalah penjelasan yang sangat jelas yang kurang dari dokumentasi Heroku atau jawaban lain untuk pertanyaan itu. Setidaknya semua info tampaknya tidak muncul di satu tempat. Ini juga memungkinkan Anda memahami masalah dengan cara yang tidak dimiliki alat akun.

Heroku mengidentifikasi Anda dalam 2 cara:

Yang pertama ada di .git / config

[heroku]
    account = acccount_name

Ini sepertinya membiarkan Anda melakukan operasi dasar menggunakan heroku

Cara kedua heroku mengidentifikasi Anda adalah dengan operasi apa pun yang menggunakan ssh (git push). Heroku akan mengidentifikasi Anda dengan kunci ssh Anda, sebagaimana dinyatakan di sini: https://devcenter.heroku.com/articles/keys

Keypair ini digunakan untuk kriptografi yang kuat dan yang secara unik mengidentifikasi Anda sebagai pengembang ketika mendorong perubahan kode.

Jadi setiap akun heroku yang Anda kerjakan harus mengirim kunci berbeda ke heroku saat menggunakan ssh. Ikuti setiap tutorial untuk membuat kunci ssh Anda.

Kuncinya adalah mendapatkan SSH untuk menggunakan kunci yang berbeda untuk setiap akun Heroku. Bagaimana Anda mengkonfigurasi ini? Anda harus melakukan 2 hal:

1) Anda harus membuat domain 'dummy' yang akan disadap dan dikonfigurasi ulang .ssh / config Anda. Ini akan memberi tahu ssh domain 'aktual' yang Anda inginkan, dan kunci ssh khusus mana yang akan digunakan.

Host heroku.my_unique_key
  HostName heroku.com
  IdentityFile ~/.ssh/identity.heroku.my_unique_key
  IdentitiesOnly yes

2) Ubah .git / config Anda untuk menggunakannya saat menggunakan git push. Alih-alih heroku.com, gunakan domain dummy yang Anda atur di .ssh / config Anda

[remote "heroku"]
    url = [email protected]


[remote "heroku"]
    url = [email protected]_unique_key:myapp.git

Itu saja :) Agak rumit dan sedikit sederhana pada saat bersamaan. Butuh waktu 3 tahun untuk membenturkan kepala ke dinding dan mencoba-coba menemukan informasi ini. Itu harus didokumentasikan dengan jelas di suatu tempat, tapi setidaknya ini awal.

pixelearth
sumber
Nama host unik adalah masalah saya. Terima kasih banyak pixelearth.
FluffyJack
Muchos Gracias Por Favour
EE33
9

Anda harus membuat kunci baru dan menambahkannya

tentukan nama file baru setelah dijalankan

ssh-keygen

lalu (dalam kasus saya)

heroku keys:add /home/alex/.ssh/alex_heroku_rsa.pub
akmur
sumber
3

Saya memiliki masalah yang sama minggu lalu. Tautan ini membantu saya keluar. Saya harap ini sedikit membantu Anda. http://devcenter.heroku.com/articles/keys

Benjamin
sumber
Saya telah melihat tautan itu, mencoba untuk menghapus dan menambahkan kunci saya lagi, namun saya masih tidak dapat membuatnya berfungsi.
mre 9'12
Sudahkah Anda menyortir masalah ini?
Benjamin
1
Bisakah Anda meringkas instruksi di tautan ini? Kami mencoba menghindari jawaban hanya tautan di sini.
lilin elang
Ini hanya menjelaskan cara membuat kunci, bukan cara mengelola banyak tombol.
Macario
3

Dalam kasus saya, heroku keyssudah ada kunci yang benar terdaftar. Jadi, yang harus saya lakukan adalah berlari ssh-add /path/to/that/keydan kemudian semuanya mulai bekerja dengan baik.

M. Scott Ford
sumber
2

Saya juga memiliki dua akun Heorku dan sebagai penyelesaian, saya "mengundang" akun utama saya (akun yang kuncinya digunakan secara otomatis oleh Heroku) sebagai kolaborator untuk proyek saya.

Fabio CR
sumber
1

Tidak ingin menambahkan solusi untuk pengguna Windows.

  1. Pertama unduh "Generator Putty Key"

  2. Buat kunci dengan itu OBS Anda perlu memindahkan mouse Anda ke daerah kosong untuk menghasilkan keacakan.

  3. Simpan kunci Anda, cukup ingat untuk mengganti nama kunci Anda menjadi [name] .pub

  4. Jalankan heroku keys:adddi terminal!

Rails pemula
sumber
0

Dalam kasus saya masalahnya adalah versi ssh yang saya gunakan. Saya hanya mengatur variabel lingkungan GIT_SSH ke yang lain ("GIT_SSH = / usr / bin / ssh") dan semuanya berjalan baik untuk saya.

gfhuertac
sumber