git push heroku master Quyền bị từ chối (publickey). chết người: Kết thúc điều khiển từ xa bị treo đột ngột


85

Xin thứ lỗi cho một chút thất vọng, điều này tôi sẽ cố gắng kiểm tra vì Heroku đang sử dụng SO làm bộ phận hỗ trợ khách hàng của họ (điều mà tôi nghĩ ít nhất phải nói là kém cỏi).

Trong năm giờ qua, tôi đã cố gắng để ứng dụng được xuất bản, nhưng luôn có điều gì đó không ổn với các phím. Tôi đã đọc hàng tá bài báo và thử hết mẹo này đến mẹo khác trong nỗ lực tìm ra nơi, trong quá trình ngu ngốc, hoàn toàn không rõ ràng mà Heroku đang vặn vẹo.

Trường hợp sử dụng của tôi không quá khó: Tôi đã tạo một keypair mới cho các ứng dụng heroku của mình. Tôi đã đặt khóa đó làm khóa của mình:

  > heroku keys
  === travis@xxxx.com Keys
  ssh-rsa AAAAB3NzaC...avOqfA7ZBd travis@xxxx.com

Tôi có thể đăng nhập và "tạo" một ứng dụng (tên ngu ngốc, vì nó dường như đang tạo một repo git, không phải bất kỳ loại ứng dụng nào) mà không có vấn đề gì. Nhưng mỗi * hoảng * thời gian tôi cố gắng đẩy ứng dụng của tôi, tôi nhận được:

  > git push heroku master
  Permission denied (publickey).
  fatal: The remote end hung up unexpectedly

Tôi không có cái nhìn sâu sắc về WTF đang diễn ra với nó; Tôi chỉ biết đập đầu vào bàn phím mà không có cách nào khác ngoài việc hy vọng vị thần toàn năng của Google có thể giải đáp. Và google không trả lời nó (tốt, hãy để tôi rút lại điều đó, tôi đã thấy khoảng chục cách để trả lời điều này).

Đối với một hệ thống được cho là dễ dàng, đây là một trò đùa. Tôi thích ý tưởng về Heroku, nhưng sau khi mất năm người mà hoàn toàn không làm được , tôi nghĩ có lẽ đó là lựa chọn sai lầm.


7
Tôi sẽ cho bạn biết rằng dịch vụ hỗ trợ khách hàng mà chúng tôi cung cấp cho Heroku là hàng kém chất lượng bậc nhất.
Robert Harvey

1
Tôi chưa bao giờ bị ấn tượng bởi chất lượng câu trả lời tại SO. Tôi chỉ nghĩ rằng đó là một cách khập khiễng để cung cấp hỗ trợ khách hàng cho một sản phẩm, bất kể kỹ thuật như thế nào. Điều gì xảy ra nếu tôi phải cung cấp chi tiết tài khoản cá nhân? Không chính xác những gì tôi muốn chia sẻ với mọi người (như tôi đã nhận ra khi nào tôi cần sửa đổi bài đăng gốc).
Travis Jensen

Bạn đã thấy câu hỏi này ? Đặc biệt là phần về việc đăng ký khóa công khai của bạn với git?
Ken White,

7
Cùng một vấn đề, có những giải pháp ở đây: http://www.whatibroke.com/?p=284

1
Giải pháp liên kết của Remi đã làm việc cho tôi.
Deborah

Câu trả lời:


149

Có rất nhiều giải pháp trên web. Tôi sẽ cố gắng cô đọng các tùy chọn có sẵn thành một bài. Vui lòng thử lại kết nối của bạn sau mỗi bước.

  • Bước 1: Cố gắng thêm bạn khóa công khai vào Heroku

    heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will prompt you to pick one of your keys
    
  • Bước 2: Tạo một bộ khóa SSH mới, sau đó thử lại bước đầu tiên

    https://help.github.com/articles/generating-ssh-keys

  • Bước 3: Xác minh và / hoặc sửa đổi tệp cấu hình của bạn

    vim ~/.ssh/config
    
    Host heroku.com
    Hostname heroku.com 
    Port 22 
    IdentitiesOnly yes 
    IdentityFile ~/.ssh/id_rsa    <--- Should be your public SSH key
    TCPKeepAlive yes 
    User jsmith@gmail.com
    
  • Bước 4: Xóa remote heroku khỏi git, việc tạo lại kết nối, thêm remote thông qua heroku create sẽ chỉ là tùy chọn cho kho mới. Đảm bảo xóa repo cũ mà bạn đã cố gắng tạo ban đầu

     $ git remote rm heroku
     $ heroku create
    
  • Bước 5: Cài đặt lại Bộ công cụ Heroku


10
Bước 1 đã thực hiện thủ thuật cho tôi! (Tuy nhiên, tôi đã tạo lại các khóa SSH của mình cho máy và Github trước khi đẩy chúng sang Heroku.) Cảm ơn!
ATSiem

1
KHÔNG CÓ GÌ trong số này hiệu quả với tôi, mặc dù đã làm rất cẩn thận từ đầu hai lần với cài đặt sạch và mọi thứ. Cuối cùng, điều khiến tất cả hoạt động là đảm bảo khóa GitHub và khóa Heroku của tôi giống nhau. Tôi thậm chí không hiểu tại sao điều đó lại tạo ra sự khác biệt, trừ khi bằng cách nào đó tôi không nhận thấy rằng Heroku dựa vào GitHub, nhưng bằng cách nào đó nó đã khắc phục được sự cố. Có thể thay đổi các phím trong cài đặt tài khoản trên GitHub. Tôi nghĩ bạn nên thêm điều này vào câu trả lời của bạn.
temporary_user_name

1
Tôi tin rằng dòng IdentityFile phải là khóa ssh riêng của bạn. Xem stackoverflow.com/a/8874946/2816571
Paul

2
Ý bạn là heroku create? git heroku createkhông phải là một điều, cho đến nay như tôi biết.
Michael Dorst

1
Chà. Tôi không thể nghĩ ra điều gì thú vị để nói về trải nghiệm này. Tôi đã làm theo nhiều công thức, bao gồm gỡ cài đặt / cài đặt lại git, github và thay thế putty bằng msysgit. Bước 1-3 cuối cùng đã làm được, nhưng thay đổi cần có trong github ssh_config. Sau khi đánh rơi và đặt lại các khóa github của tôi nhiều lần mà không gặp bất kỳ sự cố nào, quá trình sử dụng heroku thực sự rất khó chịu .
wilk

13

Khóa heroku và khóa github của bạn không đồng bộ.

  • Xác định khóa bạn muốn sử dụng (khuyên bạn nên tạo khóa mới tức là heroku_rsa).

  • Thêm khóa vào github.

  • Thêm khóa tương tự vào heroku bằng cách sử dụng:heroku keys:add


4
Tôi thực sự, thực sự, thực sự ước tôi đã đọc câu trả lời này bốn giờ trước. Mặc dù tôi cho rằng tôi đã học được rất nhiều thứ trong suốt chặng đường, nhưng không phải tất cả đều tệ.
temporary_user_name

Tôi có hai tài khoản Heroku khác nhau (một tài khoản sử dụng email công việc của tôi, cho các dự án tại nơi làm việc, tài khoản kia sử dụng email cá nhân của tôi, cho các dự án tự do). Heroku sẽ không để tôi sử dụng cùng một chìa khóa cho cả hai. Vậy làm cách nào để có thể sử dụng khóa Github của mình cho cả hai? (Và tại sao Heroku đặc biệt cần phải sử dụng chìa khóa Github tôi anyway gì có Heroku đã làm với Github gì nếu tôi không sử dụng Github??) Tôi rất bối rối
Callum

Làm việc như người ở! Cảm ơn!
Shashank,

2

Tôi đã gặp phải vấn đề tương tự và đây là lý thuyết về những gì đang xảy ra:

Tôi đã đăng ký Heroku từ lâu, đưa cho họ khóa công khai github của tôi. Khi cố gắng bình thườnggit push heroku master , nó sẽ đi và tìm khóa riêng của tôi, được tìm thấy tại ~/.ssh/github_rsa. Sau đó, nó âm thầm không thành công với tin nhắn bạn đã đăng.

Tuy nhiên, sau đó tôi đã cố gắng truy cập sshvào một máy chủ khác bằng cách sử dụng -icờ để chỉ định "tệp danh tính" của tôi (tức là khóa riêng tư) và nó đã nhắc tôi nhập mật khẩu cho khóa riêng của mình. Sau khi "mở khóa" khóa riêng,git push heroku master lệnh hoạt động. Một số kết luận:

  • Trong khi ssh sẽ nhắc bạn nhập mật khẩu vào tệp danh tính,git sẽ không.
  • Nếu bạn mở khóa tệp danh tính bằng một phương pháp khác, như ssh , nó sẽ luôn mở khóa chogit sử dụng.
  • Dường như không có bất kỳ tài liệu nào về cách xóa vĩnh viễn mật khẩu bảo vệ trên tệp danh tính, bao gồm cả lệnh unix phổ biến keytool.
  • Các giải pháp tạo cặp khóa công khai / riêng tư mới ở trên dường như là một giải pháp cho vấn đề mật khẩu này, mà không biết đó là vấn đề.


1

Với tôi, có vẻ như vấn đề là tôi có ssh-agent đang chạy ở chế độ nền và khóa cá nhân liên quan chưa được thêm vào nó.

ps -afe | grep ssh-agent

ssh-add ~/.ssh/id_rsa_heroku_github

Tôi cũng phải thêm khóa công khai vào github (thủ công) và heroku

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

0

Nếu không có giải pháp nào khác phù hợp với bạn, hãy đảm bảo rằng bạn đã đăng nhập vào linux shell bằng tài khoản của mình chứ không phải bằng tài khoản root .

Bằng cách đó, nếu bạn đang chạy với người dùng không phải là chủ sở hữu của các khóa ssh của bạn, git sẽ tìm kiếm các khóa sai để xác thực

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.