ssh git clone 超时

Posted

技术标签:

【中文标题】ssh git clone 超时【英文标题】:ssh git clone times out 【发布时间】:2020-04-18 09:43:05 【问题描述】:

请帮忙

我正在尝试通过 SSH 与 linux ubuntu 服务器上的 git / github 进行通信,同时还有一个不同的 SSH 端口(不是 22 )。 当我尝试git clone 时,我正在使用这个命令:

$ git clone -v [git@github.com:12345]:username/project-web.git myfolder

它挂了大约 3 分钟,然后我得到这个输出:

Cloning into 'myfolder'...
ssh: connect to host github.com port 12345: Connection timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我的防火墙 (UFW) 设置正确;我可以成功 SSH 并连接到服务器。 这是我的 UFW 配置:

22                         DENY        Anywhere
12345/tcp                  ALLOW       Anywhere
12345                      ALLOW       Anywhere
22/tcp                     DENY        Anywhere
22 (v6)                    DENY        Anywhere (v6)
12345/tcp (v6)             ALLOW       Anywhere (v6)
12345 (v6)                 ALLOW       Anywhere (v6)
22/tcp (v6)                DENY        Anywhere (v6)

这是我的~/.ssh/config 文件:

Host github.com
    User git
    Hostname github.com
    IdentityFile ~/.ssh/deploy
    IdentitiesOnly yes
    Port 12345

还有我的/etc/ssh/sshd_config 文件:

...
Port 12345
...

我已经尝试了这些其他相关的 SO 答案,但仍然没有运气:

git remote add with other SSH port

Git On Custom SSH Port

我做错了什么?我使用了错误的命令吗?我已经尝试了上面相关答案中的许多命令,仍然没有运气。

【问题讨论】:

注意git != github--github是一个使用git协议的云服务。您正在尝试连接到端口 12345 上的 github.com,正如我所料,该端口超时。您要“linux 服务器”连接到github 还是从另一个工作站连接到“linux 服务器”? @karmakaze 是的,我正在使用github,我理解那部分。我只是想通过另一个端口通过 SSH 使用 gitgithub。克隆、拉取、结帐等。我的~/ssh/config 文件可能有问题吗? 我知道github.com 上没有设置可以让您选择连接到他们服务的端口。它始终是 https(端口 443)或 ssh(端口 22)。 换句话说,当你敲 GitHub 的门,他们说“谁是谁”,你说“端口 12345”时,他们说“走开,我们不喜欢你”。您必须先说“端口 22”。在端口 22 上阻止 inbound 连接是完全可以的;不要阻止 outbound 端口,并且在与 GitHub 通信时不要尝试使用不同的端口。 请注意,在非标准端口上运行您自己的入站 ssh 服务器很好,并为您提供一些次要优势,但不会为您提供大量安全性:运行端口扫描器的人可以看到您的系统在该端口上响应,然后可以探测以查看该端口上可能运行的内容,并确定它是一个 ssh 服务器。 【参考方案1】:

简而言之,您无法更改远程服务正在侦听的端口。您正在尝试将非默认端口 12345 与 github.com 一起使用,这不会成功。在/etc/ssh/sshd_config 中更改内容也完全无关紧要。它会改变您的 sshd 的行为(即,如果有人尝试 ssh 或 git@ssh 到您的机器)。

顺便说一句。你可以用这个单线测试你到 github 的 ssh 连接:

ssh -T git@github.com

请注意,任何非默认端口都会挂起连接 (ssh -T git@github.com -p 12345)

【讨论】:

好的,谢谢,我开始认为 github 不会处理其他端口号。谢谢大家谢谢大家【参考方案2】:

首先,如果您希望您的 ~/.ssh/config 被考虑在内,您的 SSH URL 应该是

github.com:username/project-web.git

(没有git@,没有:12345

第二个 12345 仅适用于反向代理,然后将重定向到端口 22 或 443(当“Using SSH over the HTTPS port”时)。 关于端口 443,主机名将是 ssh.github.com

【讨论】:

好的,我也试试这个,感谢帮助

以上是关于ssh git clone 超时的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins 定义git clone超时时间

使用 ssh 连接的 git clone 失败“连接由 <server_IP> 端口 7999 重置”

关于git设置多个账号的问题,ideal中clone项目

gitlab发版ssh连接超时

github 连接超时 ssh: connect to host github.com port 22: Connection timed out

github 连接超时 ssh: connect to host github.com port 22: Connection timed out