it-swarm.asia

Heroku 'Permission Permission (publickey) قاتل: لا يمكن القراءة من مشاكل مستودع التخزين البعيد

لقد بحثت حولها لساعات عديدة بحثًا عن حل لمشكلتي التي تبدو سهلة الإصلاح. ليس الأمر أن بحثي لم يصل إلى أي شيء ، بل إن بحثي ظهر في العديد من الحلول المختلفة - التي لم ينجح منها.

على أي حال ، أنا ببساطة غير قادر على الدفع أو السحب أو الجلب من مستودع Heroku الخاص بي من جهاز Mac. كل محاولة تعطيني (كما لو كانت تسخر مني) الخطأ التالي:

تم رفض الإذن (publickey). فادح: لا يمكن القراءة من المستودع البعيد.

لقد حاولت (وأعدت تجربتي) لإصلاحها بعدة طرق مختلفة. كما قلت ، لقد قضيت جزءًا جيدًا من اليومين الأخيرين في البحث عن إجابة. إليك بعض الأشياء التي جربتها:

  • مفاتيح heroku: clear متبوعة بمفاتيح heroku: add
  • تجديد مفتاح ssh بمفردي باستخدام 'ssh-keygen -t rsa'
  • مسح دليل .ssh الخاص بي ، متبوعًا بمفاتيح heroku: clear ، متبوعًا بإنشاء مفتاح ssh
  • حذف تطبيقي على heroku وإعادة إنشاء واحد (لحسن الحظ لم يكن هناك الكثير)

يمكنني إحضارها من مستودع GitHub الخاص بي بشكل جيد ، لذلك أعرف أنها ليست اتصال شبكة (يعمل الأمر ping ping heroku أيضًا).

كحل مؤقت (آمل ألا يتحول إلى حل دائم) ، قمت بتسجيل الدخول إلى مثيل Ubuntu Amazon AWS ec2 الخاص بي. يعمل السحب والدفع من وإلى Heroku بشكل مثالي. لهذا السبب ، ما زلت أشعر كما لو أن المشكلة تكمن في المفتاح ssh الموجود على جهاز Mac. يظهر كلا المفتاحين تحت حساب Heroku الخاص بي. هل عنوان البريد الإلكتروني في نهاية الأمر مهم؟

تحرير: يمكنني الدفع والسحب من GitHub بشكل جيد (أنا لا أستخدم ssh ،) ، فلماذا لا Heroku؟

في هذه المرحلة ، أنا على استعداد لتجربة أي شيء. شكر!

138
thebradbain

لقد ظننت أنني أشارك أنني وجدت إجابة لسؤالي الخاص.

لقد أوضحت لي كتابة مشكلتي الأمر أكثر فأكثر ، وبحثت أكثر في المكان الذي اعتقدت أن مشكلتي تكمن فيه: مفتاح ssh

تبين أنني كنت على حق. لم تكن المشكلة تتعلق بالمفتاح نفسه ، لكنني لم أقم بإضافته إلى قائمة مفاتيح ssh المحلية المعروفة لدى Mac. لذلك على الرغم من أن حساب Heroku الخاص بي قد تم تحميل المفتاح الصحيح ، لم يتمكن جهاز Mac من المصادقة عليه لأنه لم يتمكن من العثور على هذا المفتاح على جهاز الكمبيوتر الخاص بي. الحل؟

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

أرغب في منح رصيد إلى https://help.github.com/articles/error-permission-denied-publickey لكونه مرجعًا جيدًا.

121
thebradbain

أعلم أن هذا قد تمت الإجابة عليه بالفعل. ولكني أود أن أضيف حلي لأنه قد يفيد الآخرين في المستقبل ..

خطأ المفتاح الشائع هو: Permission denied (publickey). يمكنك إصلاح ذلك باستخدام keys:add لإعلام Heroku بالمفتاح الجديد.

باختصار اتبع الخطوات التالية: https://devcenter.heroku.com/articles/keys

عليك أولاً إنشاء مفتاح إذا لم يكن لديك مفتاح:

ssh-keygen -t rsa

ثانياً عليك إضافة المفتاح إلى Heroku:

heroku keys:add
274
Kris Hollenbeck

كان لدي نفس الخطأ بالضبط (في نظام التشغيل Windows 7) وكان السبب مختلفًا. لقد قمت بحلها بطريقة مختلفة لذلك اعتقدت أنني سأضيف السبب والحل هنا للآخرين.

على الرغم من أن الخطأ يبدو أنه يشير إلى heroku حقًا ، كان الخطأ يقول "Heroku can't get to the git repository". أقسمت أنه كان لدي نفس المفاتيح على جميع الخوادم لأنني قمت بإنشائها وتحميلها واحدة تلو الأخرى في نفس الوقت.

بعد أن أمضيت يومًا تقريبًا على هذا ، أدركت أنه نظرًا لأن git كانت تظهر لي بصمة فقط وليس المفتاح الفعلي. لم أتمكن من التحقق من مطابقة المفتاح للمفتاح على HD أو heroku. لقد بحثت في ملف المضيفين المعروفين وأظن ماذا ... إنه يعرض المفاتيح لكل خادم وكنت قادرًا على رؤية بوضوح أن المفاتيح العامة git و heroku لم تتطابق.

1) قمت بحذف جميع الملفات الموجودة في مجلد المفتاح الخاص بي ، والمفتاح من github باستخدام موقعه على الويب ، والمفتاح من heroku باستخدام git bash والأمر heroku keys:clear

2) اتباع تعليمات github هنا لإنشاء زوج مفاتيح جديد وتحميل المفتاح العمومي إلى git

3) باستخدام git bash-heroku keys:add لتحميل نفس المفتاح إلى heroku.

الآن git Push heroku master يعمل.

يا له من كابوس ، آمل أن يكون هذا ساعد شخص ما.

بريان

31
Bryan Myers

المشكلة التي كنت أواجهها هي أنني كنت أستخدم https فقط لحساب GitHub الخاص بي. كنت بحاجة للتأكد من أن حساب GitHub الخاص بي كان الإعداد للوصول إلى ssh وأن GitHub و heroku كانا يستخدمان نفس المفاتيح العامة. هذه هي الخطوات التي اتخذتها:

  1. انتقل إلى دليل ~/.ssh وحذف id_rsa و id_rsa.pub إذا كانت هناك. لقد بدأت باستخدام مفاتيح جديدة ، رغم أنه قد لا يكون ضروريًا.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. اتبع الخطوات على gitHub إلى إنشاء مفاتيح ssh
  3. تسجيل الدخول إلى heroku ، وإنشاء موقع جديد وإضافة مفاتيحك العامة:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git Push heroku master
    
17
sjking

كان لدي نفس الحالة على نظام التشغيل Linux أوبونتو وقمت بإصلاحه ، يبدو أن نظام التشغيل كان مرتبكًا بين /root/.ssh/ و home/user/.ssh/dir ، ما فعلته هو:

  1. إزالة كافة المفاتيح من الدليل الرئيسي/المنزل/المستخدم .shh.
  2. إنشاء مفتاح جديد تأكد من الانتباه إلى مسار الخلق (/home/you/.ssh/id_rsa) أو (/root/.ssh/id_rsa)
  3. تحقق من مفاتيح heroku heroku keys
  4. إذا كانت المفاتيح واضحة هناك heroku keys:clear
  5. heroku keys:add الآن هنا إذا تعذر على heroku العثور على مفتاح وطلب إنشاء رقم واحد صحيح ، وهذا يعني أن لديك نفس المشكلة التي تواجهني ، فقم بتنفيذ الأمر add مثل هذا heroku keys:add /root/.ssh/id_rsa.pub ، المسار الذي ستضيفه سيكون هو المسار الذي ستضيفه حصلت في الخطوة 2.
  6. جرب git Push heroku master الآن
6
oqx

طريقي على ويندوز 8

  1. أضف دليلًا مع ssh-keygen إلى متغير PATH الخاص بالنظام ، عادةً C:\Program Files (x86)\Git\bin

  2. افتح CMD ، انتقل إلى C:\Users\Me \

  3. إنشاء مفتاح SSH ssh-keygen -t rsa

    أدخل الملف الذي تريد حفظ المفتاح فيه (//.ssh/id_rsa): .ssh/id_rsa (قم بتغيير المسار الافتراضي غير الصحيح إلى .ssh/somegoodname_rsa)

  4. أضف المفتاح إلى Herokuheroku keys:add

    حدد مفتاح تم إنشاؤه من قائمة

  5. انتقل إلى دليل التطبيق الخاص بك ، اكتب بعض الرموز الجميلة

  6. بدء git repo git initgit add .git commit -m 'chore(release): v0.0.1

  7. إنشاء تطبيق Herokuheroku create

  8. نشر تطبيقك git Push heroku master

  9. افتح تطبيقك heroku open

3
Ivan Rave

تحتاج إلى إنشاء مفتاح ssh جديد عن طريق كتابة ما يلي - ssh-keygen -t rsa

ثم تحتاج إلى إضافة: - مفاتيح heroku: إضافة

ثم إذا قمت بكتابة - heroku مفتوحة

تم حل المشكلة.

نجحت بالنسبة لي على أي حال ، يمكنك محاولة ...

2
nabin

كان مشكلة مماثلة ، وحاول الكثير من الأشياء. في النهاية ، ما كان يناسبني هو تثبيت Gnu على Windows ( https://github.com/bmatzelle/gow/releases ) ، والتأكد من أنه كان يستخدم أداة ssh داخل هذا الدليل وليس مع بوابة. بمجرد تثبيت الاختبار مع (تأكد من أنه في بيئتك PATH يسبق Git\bin)

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

اعتدت المعجون والمسابقة كما هو موضح هنا: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-PuTTY-plink-pageant/

بمجرد إرسال المفاتيح إلى heroku (مفاتيح heroku: إضافة c:\Users\Person.ssh\id_rsa.pub) ، استخدم

ssh -v <username>@heroku.com 

وتأكد من أن مجموعتك تظهر استخدام PuTTY - أي كومة عمل:

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

واحد كان يعمل سابقا وفشل:

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

لقد حصلت على نفس الخطأ ولأن لديّ 4 مفاتيح ssh ، لذلك حاولت المتابعة:

ssh-keygen -t rsa
heroku keys:add

ثم ، تظهر أربعة خيارات:

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

اخترت 3) ، أحدث واحد

ثم ، أنا إصلاح الخطأ.

2
rocLv

أنا استخدم هذه الطريقة لحل هذه المشكلة ربما يمكنك تجربتها

"تمكين وكيل ssh"

  1. تحميل بوابة

http://git-scm.com/

  1. تثبيته

  2. تمكين وكيل ssh

C:\ملفات البرنامج\بوابة\كمد

بدء سه وكيل

تختفي الرسالة بعد تمكين الوكيل. آمل أن يساعدك ذلك

1
徐啟倫

أرغب في إضافة حل آخر لأنني لم أره هنا. كانت مشكلتي هي أن heroku كان يرتبط بعنوان url غير الصحيح (حيث ظللت ألعب مع أسماء url). تحرير url البعيد حل مشكلتي:

git remote set-url heroku <heroku-url-here>
1
ytv

SO لذلك حل بسيط للغاية ، انتقل إلى c: /Users/user_name/.ssh/ وحذف جميع أزواج المفاتيح العامة/الخاصة ، وبهذه الطريقة سوف يولد heroku المفاتيح لك.

0
00imvj00

كان لدي خطأ heroku ssh مماثل لم أتمكن من حله.

كحل مؤقت ، استخدمت ميزة heroku http-git الجديدة (نقل http لجهاز التحكم عن بعد "heroku" بدلاً من ssh). التفاصيل هنا: https://devcenter.heroku.com/articles/http-git

(نسخة مختصرة: إذا كان لديك مشروع يقوم بالفعل بإعداد الطريقة القياسية ، فقم بتشغيل heroku git: remote --http-init لتغيير "heroku" عن بعد إلى http.)

حل سريع جيد إذا لم يكن لديك الوقت لإصلاح/استكشاف مشكلة ssh.

0
FullTimeCoderPartTimeSysAdmin

كان لي نفس القضية. وحاولت إعادة ضبط مفاتيحي كما قال الجميع ، لكنها لم تنجح. لأنه كان لأنني قمت بإعادة تسمية التطبيق.

إذن ما فعلته هو إعادة ضبط مفاتيحي وكذلك إعادة تسمية التطبيق من وحدة التحكم. تحقق من هذا السؤال لمزيد من المعلومات: مشكلة في تطبيق Heroku Push

0
Alin Ciocan