【问题标题】:Cannot push git to remote repository: (SSH error)无法将 git 推送到远程存储库:(SSH 错误)
【发布时间】:2022-03-19 01:27:23
【问题描述】:

当我尝试推送到我的 heroku.com 远程 git 存储库时,我收到以下消息:

ssh: connect to host heroku.com port 22: Connection refused

我可以轻松地使用我在 github 上的存储库使用相同的 ssh 密钥。

输入:

$ssh git@github.com    #outputs: success message
$ssh git@heroku.com    #outputs: ssh: connect to host heroku.com port 22: Connection refused

我使用的是 Mac OS 10.6。而且我非常无知慢慢学习!

更新:

$telnet heroku.com 22

给出这个输出:

Trying 75.101.145.87...
telnet: connect to address 75.101.145.87: Connection refused
Trying 75.101.163.44...
telnet: connect to address 75.101.163.44: Connection refused
Trying 174.129.212.2...
telnet: connect to address 174.129.212.2: Connection refused
telnet: Unable to connect to remote host

【问题讨论】:

  • 我添加了 ssh 标签,因为它与问题相关,并删除了 ruby​​-on-rails 标签,因为它不是。

标签: git ssh github heroku


【解决方案1】:

Connection denied 是一条 TCP 错误消息,表示该服务器未在该端口上运行服务。在这种情况下,也许 heroku.com 的 SSH 服务器没有运行。

如果你没有给他们你的密钥,或者你使用了错误的私钥,ssh 会这样说:

frank@roke$ ssh git@heroku.com
Permission denied (publickey).

frank@roke$ ssh -i ~/.ssh/roke-frank.priv git@heroku.com
Permission denied (publickey).

(并且上面的消息表明现在heroku的SSH服务器确实在运行。)

由于您无法连接到我可以连接的同一台服务器,因此可能存在防火墙问题。你在 NAT 后面吗?您的网关是否允许连接到远程机器上的端口 22?

那台机器也运行一个网络服务器,所以试试telnet heroku.com 80 看看你是否可以连接到那台机器。

【讨论】:

  • telnet heroku.com 80 成功...$ telnet heroku.com 80 Trying 75.101.163.44... 连接到heroku.com。 ----我不在防火墙后面,真正奇怪的是 $ssh git@github.com 没有问题..(如果我运行 ssh -v git@github.com,我可以看到它正在连接端口 22)
  • 是时候询问 tcpdump。试试tcpdump -i <your interface> -vX -s1024 host heroku.com and port 22 之类的东西,让我们看看输出。
  • 所以我不知道该为 放什么(我对网络知之甚少)。通过谷歌搜索,看起来有些选项是 en0、en1、fw0 和 lo0。我尝试了所有这些(我必须做'sudo'才能到达任何地方)。按回车后,我会看到tcpdump: listening on en1, link-type EN10MB (Ethernet), capture size 1024 bytes,然后是一个闪烁的光标。什么都没有发生...如果我按 Ctl+C 退出,它会显示:0 packets captured / 0 packets received by filter / 0 packets dropped by kernel 有帮助吗?非常感谢您的宝贵时间
  • @frank,最后一件事! heroku 的技术支持人员回复我说我可能有同伴监护人或类似的东西导致了问题。 (我安装了 peerguardian,但目前没有运行)。具体引用他们的话,他们说“大多数时候,我们发现用户的软件阻止了 ec2/amazon。”也许这有帮助?
  • 我进行了一些挖掘,发现 peerguardian 有两个进程在 System Profiler 中运行,即使应用程序没有运行。我完全卸载了 PeerGuardian 并重新运行 telnet heroku.com 22. 成功!
【解决方案2】:

似乎 ssh-server 不工作或主机离线。 我认为这是暂时的麻烦。

我现在正在尝试:

telnet heroku.com 22
Trying 174.129.212.2...
Connected to heroku.com (174.129.212.2).
Escape character is '^]'.
SSH-2.0-OpenSSH_5.1p1 Debian-5pgsql1

无论如何你都可以诊断出ssh -v git@heroku.com(或-vv)

【讨论】:

  • 结果:OpenSSH_5.2p1,OpenSSL 0.9.8l 2009 年 11 月 5 日 \\debug1:读取配置数据 /etc/ssh_config \\debug2:ssh_connect:needpriv 0 \\debug1:连接到 heroku.com [75.101.163.44] 端口 22。\\ debug1:连接到地址 75.101.163.44 端口 22:连接被拒绝 debug1:连接到 heroku.com [174.129.212.2] 端口 22.debug1:连接到地址 174.129.212.2 端口 22:连接拒绝 debug1:连接到 heroku.com [75.101.145.87] 端口 22。debug1:连接到地址 75.101.145.87 端口 22:连接被拒绝 ssh:连接到主机 heroku.com 端口 22:连接被拒绝
  • ssh -v 无济于事(在这种情况下):如您所见,这是一个 TCP 问题。连接被拒绝意味着协商 SSH 会话甚至还没有开始。
  • 我有同样的问题...我无法为我的任何应用程序推送我的代码。我无法通过 SSH(端口 22)连接到 heroku.com 以使用 git:gist.github.com/littlepea/5538265
【解决方案3】:

你需要把你的钥匙推到heroku。

因为 heroku 和 github 是两个不同的服务。他们不共享您的密钥。

【讨论】:

  • 抱歉,请参阅更新后的帖子。一般来说,我是 ssh 的新手。我的意思是我刚刚配置了一个 ssh 密钥。
  • 我成功运行了命令 $heroku keys:add /Users//.ssh/id_rsa.pub,但是当我尝试 $ssh git@heroku 时仍然出现连接错误.com
  • Matt,试试telnet heroku.com 22 来检查服务是否真的在运行。你应该看到类似SSH-2.0-OpenSSH_5.1p1 Debian-5pgsql1
  • 所以运行“telnet heroku.com 22”给了我一个错误(见更新的帖子),与运行“telnet github.com 22”相比如何给我你预测的结果(SSH-2.0- ....ETC。)。这是否意味着 heroku.com 端出了点问题?
  • 或者中间的东西。请参阅我编辑的答案以获取另一个调试提示。
【解决方案4】:

我刚刚遇到这个问题,这些东西已经工作了很长时间,突然在我所有的电脑和所有与我一起工作的人上坏了,如果它有帮助的话。我们的问题是我们的.git/config 使用@github url。

示例:代替这个

[remote "heroku-some-site"]
  url = git@heroku.com:some-site.git
  fetch = +refs/heads/*:refs/remotes/heroku/*

这样做

[remote "heroku-some-site"]
  url = https://git.heroku.com/some-site.git
  fetch = +refs/heads/*:refs/remotes/heroku/*

【讨论】:

    猜你喜欢
    • 2021-06-07
    • 2018-06-24
    • 2010-10-25
    • 2012-04-15
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    相关资源
    最近更新 更多