簡體   English   中英

git push heroku master Permission denied(publickey)。致命:遠程端意外掛斷

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

請原諒一點挫折,我會盡力控制,因為Heroku使用SO作為他們的客戶支持(我認為至少可以說是粗制濫造)。

在過去的五個小時里,我一直試圖讓應用程序發布,但鍵總是出現問題。 我已經閱讀了幾十篇文章並嘗試了提示,以便找出Heroku正在搞砸的愚蠢,完全不透明的過程。

我的用例並不難:我為我的heroku應用程序創建了一個新的密鑰對。 我已將該密鑰設為我的密鑰:

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

我可以登錄並“創建”一個應用程序(愚蠢的名稱,因為它似乎是創建一個git倉庫,而不是任何類型的應用程序)沒有問題。 但是, 每一個 *嚇壞* 時間我試圖把我的應用程序,我得到:

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

我對WTF沒有任何見解正在進行中; 我只是在沒有追索權的情況下將頭撞在鍵盤上,而是希望Google的全能之神能夠回答它。 谷歌沒有回答它(好吧,讓我把它拿回去,我已經看到了十幾種方法來回答這個問題)。

對於一個應該很容易的系統,這是一個笑話。 我喜歡Heroku的想法,但在拿走五個我們完全沒有任何事情之后,我想也許這是錯誤的選擇。

網絡上有各種各樣的解決方案。 我將嘗試將可用選項壓縮到一個帖子中。 請在每一步后再次嘗試連接。

  • 第1步:嘗試將公鑰添加到Heroku

     heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will prompt you to pick one of your keys 
  • 步驟2:生成一組新的SSH密鑰,然后再次嘗試第一步

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

  • 第3步:驗證和/或修改配置文件

     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 
  • 第4步:從git中刪除heroku遠程,重新創建連接,通過heroku create添加遠程只會是新存儲庫的選項。 請務必刪除您最初嘗試創建的舊倉庫

      $ git remote rm heroku $ heroku create 
  • 第5步:重新安裝Heroku Toolkit

您的heroku密鑰和github密鑰不同步。

  • 確定要使用的密鑰(建議創建一個新密鑰,即heroku_rsa)。

  • 將密鑰添加到github。

  • 使用以下命令將相同的密鑰添加到heroku: heroku keys:add

我遇到了同樣的問題,這是關於發生了什么的理論

很久以前我注冊了Heroku,給了我github公鑰。 當嘗試通常的git push heroku master ,它會查找我的私鑰,在~/.ssh/github_rsa 然后,它會以您發布的消息靜默地失敗。

但是,我后來嘗試使用-i標志ssh到另一台服務器來指定我的“身份文件”(即私鑰),它提示我輸入私鑰的密碼。 在“解鎖”私鑰后, git push heroku master命令工作。 一些結論:

  • 雖然ssh會提示您輸入身份文件的密碼,但git不會。
  • 如果您使用其他方法(如ssh解鎖身份文件,它將保持解鎖狀態以供您使用git
  • 似乎沒有關於如何永久刪除身份文件上的密碼保護的任何文檔,包括使用常見的unix命令keytool
  • 創建新的公鑰/私鑰對的上述解決方案似乎是此密碼問題的解決方法,而不知道問題所在。

部署heroku代碼時權限被拒絕(publickey)。 致命:遠程端意外掛斷

我認為這可能有你的解決方案,它至少對我有用

對我來說,似乎問題是我在后台運行了ssh-agent,並且沒有添加相關的私鑰。

ps -afe | grep ssh-agent

ssh-add ~/.ssh/id_rsa_heroku_github

我還必須將公鑰添加到github(手動)和heroku

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

如果其他解決方案都不適合您,請確保您使用您的帳戶登錄linux shell而不是 root帳戶。

這樣,如果您運行的是不是ssh密鑰所有者的用戶,git會查找錯誤的密鑰進行身份驗證

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM