Heroku 'Quyền bị từ chối (khóa công khai) gây tử vong: Không thể đọc từ tai ương của kho lưu trữ từ xa


139

Tôi đã tìm kiếm trong nhiều giờ liền để tìm giải pháp cho vấn đề có vẻ dễ khắc phục của mình. Không phải là tìm kiếm của tôi không có gì, mà là tìm kiếm của tôi đã đưa ra rất nhiều giải pháp khác nhau - một trong số đó đã hoạt động.

Dù sao, tôi chỉ đơn giản là không thể đẩy, kéo hoặc lấy từ kho Heroku của mình từ máy Mac. Mọi nỗ lực đều mang lại cho tôi (như thể nó đang chế giễu tôi) lỗi sau:

'Quyền bị từ chối (khóa công khai). gây tử vong: Không thể đọc từ kho lưu trữ từ xa. '

Tôi đã thử (và thử lại) để sửa nó theo nhiều cách khác nhau. Như tôi đã nói, tôi đã dành một đoạn tốt trong hai ngày qua để tìm kiếm câu trả lời. Dưới đây là một số điều tôi đã thử:

  • Phím heroku: xóa theo sau là phím heroku: thêm
  • Tự tạo lại khóa ssh bằng 'ssh-keygen -t rsa'
  • Xóa thư mục .ssh của tôi, theo sau là các phím heroku: xóa, tiếp theo là tạo khóa ssh
  • Xóa ứng dụng của tôi trên heroku và tạo lại một ứng dụng (may mắn thay không có nhiều ở đó)

Tôi có thể tìm nạp từ kho GitHub của mình tốt, vì vậy tôi biết đó không phải là kết nối mạng (ping heroku cũng hoạt động).

Là một giải pháp tạm thời (mà tôi hy vọng không biến thành một giải pháp vĩnh viễn), tôi đã đăng nhập vào phiên bản Ubuntu Amazon AWS ec2 của mình. Kéo và đẩy đến và từ Heroku hoạt động hoàn hảo. Vì lý do này, tôi vẫn cảm thấy như thể vấn đề nằm ở phím ssh trên máy Mac của tôi. Cả hai khóa đều hiển thị dưới tài khoản Heroku của tôi. Địa chỉ email ở cuối của vấn đề quan trọng?

EDIT: Tôi có thể đẩy và kéo từ GitHub tốt (tuy nhiên tôi không sử dụng ssh), vậy tại sao Heroku không?

Tại thời điểm này tôi sẵn sàng thử bất cứ điều gì. Cảm ơn!


Bạn đã đặt cụm mật khẩu cho khóa heroku của mình chưa? Và tôi cho rằng điều này ( stackoverflow.com/a/16753800/6309 ) không giúp được gì? Hoặc kiểm tra kỹ stackoverflow.com/a/16753800/6309
VonC

Đáng buồn là nó vẫn không chịu làm việc.
thebradbain

đôi khi điều này xảy ra khi heroku đang bảo trì: status.heroku.com
Mavis

Câu trả lời:


284

Tôi biết điều này đã được trả lời. Nhưng tôi muốn thêm giải pháp của mình vì nó có thể hữu ích cho những người khác trong tương lai ..

Một lỗi khóa phổ biến là : Permission denied (publickey). Bạn có thể khắc phục điều này bằng cách sử dụng keys:addđể thông báo cho Heroku về khóa mới của bạn.

Tóm lại, hãy làm theo các bước sau: https://devcenter.heroku.com/articles/keys

Trước tiên, bạn phải tạo một khóa nếu bạn không có:

ssh-keygen -t rsa

Thứ hai, bạn phải thêm khóa vào Heroku:

heroku keys:add

2
Cảm ơn kris, Một người đến từ tương lai :) điều này hiệu quả với tôi
Ahmad Ajmi

8
Phím heroku: thêm là hướng dẫn của tôi bị bỏ lỡ tôi đoán ... cảm ơn bạn! :)
Ole Henrik Skogstrøm

Khóa chỉ phải được tạo nếu bạn không có một tài sản, trong trường hợp của tôi, tôi đã có khóa và chỉ cần thêm khóa vào heroku
joseramonc

4
Cái đầu tiên là không cần thiết. heroku keys:addsẽ giúp bạn tạo một cái nếu bạn không có chìa khóa.
Mygod 14/03/2015

Chạy ssh-keygen -t rsanếu RSAkhông được tạo ra nếu không heroku keys:addthì đủ
Volatil3

122

Tôi chỉ nghĩ rằng tôi muốn chia sẻ rằng tôi đã tìm thấy câu trả lời cho câu hỏi của riêng mình.

Viết ra vấn đề của tôi khiến tôi càng hiểu rõ hơn và tôi đã nghiên cứu sâu hơn về vấn đề mà tôi nghĩ là vấn đề của mình: phím ssh

Hóa ra tôi đã đúng. Vấn đề không nằm ở chính khóa, mà là tôi đã không thêm nó vào danh sách các khóa ssh đã biết của máy Mac. Vì vậy, mặc dù tài khoản Heroku của tôi đã tải lên khóa chính xác, máy Mac của tôi không thể xác thực bằng tài khoản này vì nó không thể tìm thấy khóa đó trên máy tính của tôi. Giải pháp?

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

Tôi muốn cung cấp tín dụng cho https://help.github.com/articles/error- allow-denied-publickey để trở thành một tài liệu tham khảo tốt.


5
Cảm ơn phản hồi của bạn, chính xác hơn với tình huống của bạn so với nhận xét ban đầu của tôi. +1
VonC

4
Trên Windows, người ta sẽ cần phải bắt đầu Git Bash(nhấp chuột phải vào một thư mục) và bắt đầu một ssh-agentcái có thể bằng cách chạy `ssh-agent`(lưu ý các dấu lùi) và sau đó thêm khóa như mô tả ở trên. Tôi phải làm điều này mỗi khi tôi bắt đầu Git Bash/ ssh-agent, nó quên những gì đã được thêm vào.
TWiStErRob

Tôi đã làm điều này và nó vẫn không hoạt động. Cuối cùng tôi đã phải thêm một biến môi trường có tên HOME được đặt vào thư mục thư mục .ssh của tôi nằm trong
Justin

Cảm ơn - sẽ không bao giờ có thể tìm ra điều này!
Mark Hansen

Điều này đã khắc phục vấn đề của tôi, không phải là câu trả lời được bình chọn cao hơn, cảm ơn :)
Ryan Brodie

31

Tôi đã có cùng một lỗi chính xác (trên windows 7) và nguyên nhân là khác nhau. Tôi đã giải quyết nó theo một cách khác vì vậy tôi nghĩ tôi sẽ thêm nguyên nhân và giải pháp ở đây cho người khác.

Mặc dù lỗi dường như chỉ ra heroku thực sự là lỗi đang nói "Heroku can't get to the git repository". Tôi thề là tôi có cùng khóa trên tất cả các máy chủ bởi vì tôi đã tạo nó và tải nó lên từng cái một.

Sau khi dành gần một ngày cho việc này, tôi nhận ra rằng vì git chỉ cho tôi xem dấu vân tay chứ không phải chìa khóa thực tế. Tôi không thể xác minh rằng khóa đó khớp với khóa trên HD hoặc heroku của tôi. Tôi đã xem tập tin máy chủ đã biết và đoán xem ... nó hiển thị các khóa cho mỗi máy chủ và tôi có thể thấy rõ rằng khóa công khai của git và heroku không khớp.

1) Tôi đã xóa tất cả các tệp trong thư mục khóa của mình, khóa từ github bằng trang web của họ và khóa từ heroku bằng git bash và lệnh heroku keys:clear

2) Làm theo hướng dẫn của github tại đây để tạo cặp khóa mới và tải khóa công khai lên git

3) sử dụng git bash- heroku keys:add để tải lên cùng một khóa vào heroku.

Bây giờ git push heroku masterlàm việc.

Thật là một cơn ác mộng, hy vọng điều này đã giúp ai đó.

Bryan


1
Nắm bắt bộ não của tôi trong này cho đến khi tôi thấy bài viết của bạn. Ngay khi tôi tạo các phím git và heroku giống nhau, tất cả đều ổn. Nhưng không hiểu tại sao họ cần phải giống nhau.
Kishore Masand

Cảm ơn bạn đã trả lời nhiều năm với vấn đề này
Ivan Bacher 16/12/13

liên kết tài liệu git rất hữu ích, tất cả đều hoạt động hoàn hảo
HotJard

Điều này làm việc cho tôi sau một vài ngày cố gắng tìm ra nó. Tôi ngạc nhiên khi Heroku có thể tiếp tục kinh doanh với một vấn đề về khả năng sử dụng khó chịu này. Nên có một cách dễ dàng hơn để làm điều này.
Luke F.

Cảm ơn bạn. Đã làm cho tôi; chỉ một điều: trong liên kết github ở đâu đó nói "ssh-add". Ở đó tôi có một vấn đề, nhưng tôi đã tìm thấy giải pháp ở đây: stackoverflow.com/questions/17846529/iêu
Alin Ciocan

17

Vấn đề tôi gặp phải là tôi chỉ sử dụng https cho tài khoản GitHub của mình. Tôi cần đảm bảo rằng tài khoản GitHub của tôi đã được thiết lập để truy cập ssh và GitHub và heroku đều sử dụng cùng một khóa chung. Đây là những bước tôi đã thực hiện:

  1. Điều hướng đến thư mục ~ / .ssh và xóa id_rsa và id_rsa.pub nếu chúng ở đó. Tôi đã bắt đầu với các khóa mới, mặc dù nó có thể không cần thiết.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. Làm theo các bước trên gitHub để tạo khóa ssh
  3. Đăng nhập vào heroku, tạo một trang web mới và thêm các khóa công khai của bạn:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master
    

6

Tôi đã gặp trường hợp tương tự trên linux ubfox và chỉ sửa nó, có vẻ như hệ điều hành đã bị nhầm lẫn giữa /root/.ssh/ và home / user / .ssh / dir, những gì tôi đã làm là:

  1. đã xóa tất cả các khóa khỏi thư mục root và home / user .shh.
  2. tạo một khóa mới đảm bảo chú ý đến đường dẫn tạo (/home/you/.ssh/id_rsa) hoặc (/root/.ssh/id_rsa)
  3. kiểm tra chìa khóa heroku heroku keys
  4. nếu các phím trong đó rõ ràng heroku keys:clear
  5. heroku keys:add Bây giờ ở đây nếu heroku không thể tìm thấy khóa và được yêu cầu tạo một quyền không, và điều này có nghĩa là bạn có vấn đề tương tự như của tôi, hãy thực hiện lệnh add như thế này heroku keys:add /root/.ssh/id_rsa.pub , con đường mà bạn sẽ thêm sẽ là con đường mà bạn có ở bước 2.
  6. thử git push heroku masterngay

3

Cách của tôi trên Windows 8

  1. Thêm thư mục có ssh-keygen vào biến PATH của hệ thống, thường là C: \ Program Files (x86) \ Git \ bin

  2. Mở CMD, truy cập C: \ Users \ Me \

  3. Tạo khóa SSH ssh-keygen -t rsa

    Nhập tệp để lưu khóa (//.ssh/id_rsa): .ssh / id_rsa (thay đổi đường dẫn không chính xác mặc định thành .ssh / somegoodname_rsa)

  4. Thêm chìa khóa vào Heroku heroku keys:add

    Chọn khóa đã tạo từ danh sách

  5. Chuyển đến thư mục ứng dụng của bạn, viết một số mã đẹp

  6. Bắt đầu một repo git git init git add . git commit -m 'chore(release): v0.0.1

  7. Tạo ứng dụng Heroku heroku create

  8. Triển khai ứng dụng của bạn git push heroku master

  9. Mở ứng dụng của bạn heroku open


2

Có một vấn đề tương tự, và đã thử rất nhiều thứ. Cuối cùng, điều làm việc cho tôi là cài đặt Gnu trên Windows ( https://github.com/bmatzelle/gow/release ) và đảm bảo rằng nó đang sử dụng công cụ ssh trong thư mục đó chứ không phải công cụ có Git. Sau khi cài đặt thử nghiệm với (đảm bảo nếu trong môi trường của bạn, PATH có trước Git \ bin)

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

Tôi đã sử dụng putty và pagete như được mô tả ở đây: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-USE-putty-plink-pageant/

Khi các khóa đã được gửi tới heroku (khóa heroku: thêm c: \ Users \ Person.ssh \ id_rsa.pub), hãy sử dụng

ssh -v <username>@heroku.com 

và đảm bảo rằng ngăn xếp của bạn đang hiển thị việc sử dụng Putty - tức là ngăn xếp hoạt động:

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

Một cái đã chạy trước đó và thất bại:

C:\Git\htest2>ssh -v <username>@gmail.com@heroku.com
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).

Chỉ cần nói rằng đây là sử dụng Windows 8 (8.1). Cũng có vẻ như công cụ ssh GoW là chìa khóa, vì tôi đã có thể sử dụng nó mà không cần các phần putty và sử dụng ssh-keygen.
dùng3484361

2

bạn cần tạo một khóa ssh mới bằng cách gõ như sau - ssh-keygen -t rsa

Sau đó, bạn cần thêm: - phím heroku: thêm

Sau đó, nếu bạn gõ - heroku mở

Vấn đề đã được giải quyết.

Dù sao nó cũng hiệu quả với tôi, bạn có thể thử ...


2

Tôi đã gặp lỗi tương tự và vì tôi có 4 phím ssh, vì vậy tôi đã thử làm theo:

ssh-keygen -t rsa
heroku keys:add

Sau đó, bốn tùy chọn hiển thị:

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

Tôi chọn 3), cái mới nhất

Sau đó, tôi sửa lỗi.


1

Tôi sử dụng phương pháp này để giải quyết vấn đề này Có lẽ bạn có thể thử nó

"Kích hoạt ssh-agent"

  1. Tải git

http://git-scm.com/

  1. Cài đặt nó

  2. Kích hoạt ssh-agent

C: \ Tệp chương trình \ Git \ cmd

bắt đầu-ssh-đại lý

Thông báo không hoạt động sau khi tôi kích hoạt. Hy vọng điều này sẽ giúp bạn


1

Tôi muốn thêm một giải pháp khác vì tôi đã không thấy nó ở đây. Vấn đề của tôi là heroku đã liên kết đến url sai (vì tôi cứ chơi với tên url). Chỉnh sửa url từ xa đã giải quyết vấn đề của tôi:

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

0

Tôi gặp vấn đề tương tự. Và tôi đã cố gắng thiết lập lại chìa khóa của mình như mọi người đã nói, nhưng nó vẫn không hoạt động. Vì tôi đã đổi tên ứng dụng.

Vì vậy, những gì tôi đã làm là thiết lập lại các phím của mình và đổi tên ứng dụng từ bảng điều khiển. Kiểm tra câu hỏi này để biết thêm thông tin: Vấn đề ứng dụng đẩy Heroku


0

Vì vậy, giải pháp đơn giản như vậy, hãy truy cập c: /Users/user_name/.ssh/ và xóa tất cả các cặp khóa pub / private, theo cách này heroku sẽ tạo khóa cho bạn.


0

Tôi đã có một lỗi heroku ssh tương tự mà tôi không thể giải quyết.

Như một giải pháp thay thế, tôi đã sử dụng tính năng heroku http-git mới (http vận chuyển cho "heroku" từ xa thay vì ssh). Chi tiết tại đây: https://devcenter.heroku.com/articles/http-git

(Phiên bản ngắn: nếu bạn đã thiết lập một dự án theo cách tiêu chuẩn, hãy chạy heroku git: remote --http-init để thay đổi "heroku" từ xa thành http.)

Giải quyết nhanh chóng nếu bạn không có thời gian để khắc phục / khắc phục sự cố ssh.


Trong trường hợp của tôi, vấn đề dường như có liên quan đến ":" trong các đường dẫn từ xa ssh. (Git 1.9.4 cho các cửa sổ.) Đối với một số lý do ssh: // git @ host: repo không thành công với "chết người: Không thể đọc từ kho lưu trữ từ xa", trong khi ssh:. // git @ host / repo" thành công
FullTimeCoderPartTimeSysAdmin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.