ssh:连接到主机github.com端口22:连接超时


174

我在代理下,并且在相当长一段时间内成功推动git。
现在,我无法一下子推入git。
我已经设置了RSA密钥和代理,并仔细检查了它们,但无济于事,git向我抛出了页面标题中显示的错误。


6
在您的移动设备上创建一个热点,然后通过您的移动设备进行连接git push。为我工作。
zundi

1
对于Jenkins,请参阅:为什么从git提取时Jenkins失败?
kenorb

1
在英国,与Virgin Media发生了同样的问题。我试图在家中通过ssh推送/拉到GitHub,虽然没有运气,但是工作还不错。所以我意识到我的ISP有问题。对我来说,最简单的解决方法是使用Cloudflare DNS 1.1.1.1而不是使用默认DNS ,这就是@zundi通过移动热点成功的原因。
Vladyslav Krylasov

Answers:


254

原因可能是您在网络中时对防火墙的修改。(在这种情况下,它们可能会故意阻止某些端口)
要再次检查这是否是原因...

ssh -T git@github.com

这应该超时。如果是这种情况,请使用http协议而不是ssh,
只需将配置文件中的url更改为http。
方法如下:-

git config --local -e

更改的条目

 url = git@github.com:username/repo.git

url = https://github.com/username/repo.git

6
我曾经遇到那个问题,但是重新启动计算机解决了它。
Kevin Lee

3
致命:无法访问' gitlab.com:******。git /':端口号以'f'结尾
Fakher

我必须从网址中删除.git,这样才能为我工作。url = github.com/username/repo
Jesse

4
使用https代替ssh并不是正确的解决方案。必须有一种方法可以在git config和ssh设置中设置代理来解决此问题。
shijin

6
Virgin Media UK有一个儿童安全模式,我必须禁用它。
Finlay Percy

178

就我而言,建议的解决方案均无效,因此我尝试自己进行修复,并解决了。

对我来说,我在我的AWS EC2 UBUNTU实例上遇到此错误,解决该问题的办法是编辑ssh配置(如果不存在,则添加它)。

sudo nano ~/.ssh/config

我添加了以下内容

Host github.com
 Hostname ssh.github.com
 Port 443

然后,运行命令ssh -T git@github.com以确认问题是否已解决。

根据这个

有时,防火墙拒绝完全允许SSH连接。如果不能将HTTPS克隆与凭据缓存一起使用,则可以尝试使用通过HTTPS端口建立的SSH连接进行克隆。大多数防火墙规则应允许这样做,但是代理服务器可能会干扰

希望这对其他遇到与我一样的问题的人有所帮助。


3
这个解决方案对我来说很好用,尽管它不能解决GitLab的问题。在这种情况下,请考虑GitLab.com运行第二台SSH服务器,该服务器侦听不太可能被防火墙保护的常用端口443。您要做的就是编辑您的~/.ssh/config并更改连接到GitLab.com的方式。在这种情况下,看到这篇文章:about.gitlab.com/2016/02/18/...
lucascavalcante

1
嗨,我遇到了同样的问题,我的路由器来自NET,他阻止了22端口。该配置肯定解决了我的问题
Pedro Soares

它不是git配置而是ssh配置
GuyT

1
经过数小时的搜索后发现……您是冠军,无论如何,为什么我们需要将github.com更改为ssh.github.com?我还是不明白
罗伯特·蒂尔塔

45

基本网址重写

Git提供了一种使用git config重写URL的方法。只需发出以下命令:

git config --global url."https://".insteadOf git://

现在,就像魔术一样,所有git命令都将替换git://https://

来源: git://协议被公司封锁,如何解决?


1
谢谢!我们的是在Jenkins构建期间执行的,因此我无法手动编辑git文件(我没有jenkins帐户的git凭据)-因此这非常有用。
Phil

1
这很棒。我为每个别名添加了git别名,以便轻松切换
lfender6445

17
关于github,命令应为:git config --global url."https://github.com/".insteadOf git@github.com:。请注意差异:@变成//:变成/
Frodon

20

在.ssh文件夹中创建“ config”文件

Host github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443

Host gitlab.com
Hostname altssh.gitlab.com
User git
Port 443
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa

1
有关为什么会发生这种情况的详细说明,请参见Mahan_F答案。
refaelio

1
这是唯一在GitLab上为我工作的东西。谢谢,伊萨克!
awwsmm

5

快速解决方法:尝试切换到其他网络

我在热点(3 / 4G连接)上遇到此问题。切换到其他连接(WiFi)可以解决问题,但这只是一种解决方法-我没有机会深入了解问题,因此其他答案对于确定潜在问题可能更有趣


我从WiFi切换到4G,并且可以正常工作。我也不明白
亚当·凯西

4

我遇到了同样的问题,找不到可行的解决方案。我在设置本地服务器时遇到了这个问题,git无法通过我的代理网络连接,但我的工作站可以。这是我运行命令时的输出 ssh -vT git@github.com

ubuntu@server:~$ ssh -vT git@github.com
OpenSSH_7.2p2 Ubuntu-4ubuntu2.8, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /home/ubuntu/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [13.234.176.102] port 22.

因此,我尝试通过编辑配置文件使用通过HTTPS端口建立的SSH连接, ~/.ssh/config但无济于事。

Host github.com
 Hostname ssh.github.com
 Port 443

最后,我发现这篇文章解决了真实的问题。

# github.com
Host github.com
    Hostname ssh.github.com
    ProxyCommand nc -X connect -x <PROXY-HOST>:<PORT> %h %p
    Port 443
    ServerAliveInterval 20
    User git

这是我的配置文件,现在git通过ssh可以很好地工作!


3

执行:

nc -v -z <git-repository> <port>

您的输出应如下所示:

"Connection to <git-repository> <port> port [tcp/*] succeeded!"

如果你得到:

connect to <git-repository> <port> (tcp) failed: Connection timed out

您需要编辑〜/ .ssh / config文件。添加如下内容:

Host example.com
Port 1234

5
我不确定每个人都将已nc安装。那应该是什么?Netcat还是什么?
Hack-R

2

我遇到了相同的问题,但是我发现的答案有所不同,以为有人可能会遇到此问题,因此这是我的解决方案。

我不得不白名单2层的IP端口22804439418

  • 192.30.252.0/22

  • 185.199.108.0/22

如果这些IP不起作用,可能是因为它们已更新,您可以在此页面上找到最新的IP 。


0

上面的答案为我提供了解决此问题所需的信息。在我的情况下,网址错误地以ssh:///开头

要检查git config中的url是否正确,请打开git config文件:

git config --local -e

检查网址条目。开始时不应包含ssh:///。

输入错误:

 url = ssh:///git@github.com:username/repo.git

正确输入:

 url = git@github.com:username/repo.git

如果您的网址正确,则下一步将尝试尝试上述建议将协议更改为http的答案。


0

当我不小心切换到访客 wifi网络时,出现此错误。不得不切换回我的默认 wifi网络。


0

我有两个小时的问题,结果是从https中删除“ s”,然后执行以下操作:

git clone -b <branchName> http:<projecturl>

解决它。


请关闭这个问题并标记为已回答问题
克莱门特(Clément),

0

问题: 产生问题的步骤:git clone git@github.com:sramachand71 / test.git首次在新笔记本电脑中出现 错误 ssh:连接到主机github.com端口22:连接超时致命:无法从远程读取资料库。

请确保您具有正确的访问权限,并且存储库存在。 在系统中第一次克隆的解决方案中,我们需要为clone命令提供双引号。$ git clone“ git@github.com:sramachand71 / test.git”即使一切都正确,我仍然在系统中遇到此问题,但最后还是注意到第一次或新用户必须对URL“ repository_url.git”使用双引号在系统中。


0

将回购网址从ssh更改为https对我来说意义不大。正如我更喜欢的那样sshhttps因为我不想放弃某些额外的好处。以上答案非常准确。如果您在GitLab中遇到此问题,请转到其官方文档页面,并像这样更改您的配置文件。

Host gitlab.com
  Hostname altssh.gitlab.com
  User git
  Port 443
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/gitlab

0

重新启动计算机为我解决了它。
Git版本:2.27.0.windows.1
操作系统版本:Windows 10 v1909

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.