ssh: 连接到主机 heroku.com 端口 22 失败: 连接超时

14
我正在使用Ubuntu 11.10进行工作。 我的git仓库的本地分支是最新的。
然后我在终端中输入了以下命令:
heroku create --stack cedar

这个错误被打印出来了:
Notice: on Wed, 20 June, our default stack will change to Cedar. <Shortened Blog URL>

Creating radiant-wind-7413... done, stack is cedar  
http://radiant-wind-7413.herokuapp.com/ | git@heroku.com:radiant-wind-7413.git  
Git remote heroku added

在Wayback Machine上的博客网址1

到目前为止一切都好,然后我在终端中输入了以下内容:

git push heroku master

发生了以下错误:
ssh: connect to host heroku.com port 22: Connection timed out  
fatal: The remote end hung up unexpectedly

1 注意:短链接在2012年是可以使用的,但现在已被列入黑名单


参考 http://stackoverflow.com/questions/8742937/rails-heroku-fatal-the-remote-end-hung-up-unexpectedly - Shamith c
8个回答

21

截至2021年11月30日,Heroku已弃用SSH Git传输功能,仅支持HTTP传输。真正关闭SSH的日期是2022年3月。

您需要使用以下配置重新配置存储库:

heroku git:remote -a <app-name>

Heroku官方声明

如果您使用的是不同名称的远程,例如production,请使用以下命令:

heroku git:remote -a <app-name> -r <remote-name>

也许你需要在git全局配置中取消ssh连接:

git config --global --unset url.ssh://git@heroku/.insteadof
git config --global --unset url.ssh://git@heroku.com/.insteadof

在回答这种问题时,附上一份链接到官方文档的参考资料会非常有帮助! - andrea.rinaldi
这种方法可以使用,但如果您正在使用暂存和生产应用程序等远程,则无法直接使用。Heroku git:remote命令会创建一个新的远程heroku,因此,您需要使用git push heroku master而不是git push production master。如果有人扩展此答案以描述如何解决远程名称不是heroku的问题,那将非常有用。 - Obromios

6
很可能是防火墙问题或者您的网络管理员已经在您的网络中阻止了22号出站端口。您可以使用以下简单的脚本查看您与Heroku的连接:

$ ssh -vvv git@heroku.com

如果您看到"connect timed out",那么您可能需要请求管理员解除对22号端口的阻止。 或者,按照我在连接到使用端口443的Heroku的答案中的说明,通过隧道访问Heroku。

5

我遇到了与密钥相关的类似问题。好的,这是我所做的。

使用以下命令检查密钥的状态:

heroku keys

它会显示添加到Heroku的密钥列表。您可以随时生成新密钥并将其添加到Heroku。
ssh-keygen -t rsa

生成新密钥。
使用heroku keys:add命令将密钥添加到Heroku。在添加之前,它会列出可用的密钥,您可以选择要添加的选项。输入选项后,您的密钥将被添加到Heroku。 本文可能有所帮助。如果不起作用,则可能存在ssh问题。尝试执行ssh localhost命令,并查看ssh是否正常工作。

2
今天,Heroku使用git over ssh。ssh的默认端口是22,看起来您的网络不允许对22端口进行出站连接。也许这是您的网络管理员可以更改的事情。

对于一些公司来说,处理公司管理员/政策非常困难,有什么替代方案吗? - AzizSM
据我所知,没有这样的事情。 - James Ward
2
@JamesWard但是如果我只是在家里做这个,那么到底谁是网络管理员?我非常困惑,因为这个问题在5小时前还能正常工作,突然就停止了。我的设置没有任何改变。 - james

1

我已经花了几个小时的时间来解决这个问题,试图弄清楚为什么我的22端口突然关闭了,等等。而在字面上5小时前一切正常,也没有做出任何更改。

最后我只好在Heroku上重置我的Git存储库并重新推送所有内容。但我仍然不知道发生了什么事情。

heroku plugins:install heroku-repo
heroku repo:reset --app appname

2
我今天也遇到了同样的问题,但这种方法对我不起作用。在将远程连接从ssh切换到https后,我又能够推送了。 - RobDil
1
切换到 https 对我也起作用了。请参见 https://devcenter.heroku.com/changelog-items/2301 - tquill
截至2022年5月1日,弃用似乎已经真正开始了,@novastra的答案是正确的选择。 - james

0
我将 https 网址添加到项目文件夹中的 .git/config 文件中。我在 Heroku 的项目设置中找到了 HTTPS URL。然后,我将该网址添加到 .git/config 文本文件中以替换 SSH url。

1
目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

0

对我来说,帮助我解决问题的方法是彻底销毁整个应用并重新创建 - 在这里留下以备将来参考。

heroku apps:destroy appname
heroku apps:create appname
heroku git:remote -a appname
git push heroku master

这并没有真正回答问题。如果您有不同的问题,可以通过点击提问来提出。如果您想在此问题获得新的答案时得到通知,您可以关注此问题。一旦您拥有足够的声望,您还可以添加悬赏以吸引更多关注。- 来自审核 - High-Octane

0
请执行以下步骤。
ssh-keygen -t rsa
heroku keys:add
heroku keys  # lists keys

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接