GitHub连接超时:Failed to connect to github.com port 443: Connection timed out

开源 0

新建了一个仓库,想要执行`git push -u origin main`时,出现此错误。

排查:

1. ping

ping github.com时,没有反应,超时。

(要么时github的问题,要么就是我的机器连不上。)

2. 检查github网站状态

访问GitHub Status,显示“All Systems Operational”。

(github没问题,机器的问题。)

处理:

在网上找了找处理方法,一半是用代理,一半是改host。

因为我是在服务器上,不知道怎么弄代理,就选择改host。

方法参照:

github 访问ping不通的解决办法-腾讯云开发者社区-腾讯云 (tencent.com)

(大恩大德,没齿难忘)

另注:

        多数改host的方法说的时自己查github的ip,但是我这边查出来的ip(20.205.243.166),在/etc/hosts中添加了以下内容后仍然无效,使用链接中的内容是可行的(2024/1/20)。

20.205.243.166 github.com20.205.243.166 github.com

Github连接(https/ssh):

按照上述方法处理后,不会再显示Failed to connect to github.com port 443: Connection timed out。

但是当使用https来push时,会报错:

gnutls_handshake() failed: The TLS connection was non-properly terminated.

使用ssh来push时,会报错:

git@github.com: Permission denied (publickey).fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.

处理:

最终采用ssh,需要配置ssh访问权限。

其实我配置过,但是似乎因为不止我一个人在使用,所以从服务器连接github时,不是用的我配置的ssh。

通过询问ChatGPT,最终通过配置 ~/.ssh/config 来解决:

如果在服务器上有多个人通过 SSH 连接到 GitHub,你可以为每个用户配置单独的 SSH 密钥。每个用户都可以拥有自己的 SSH 密钥对,并将公钥添加到他们 GitHub 帐户中。

以下是基本的步骤:

为每个用户生成 SSH 密钥对:

1. 在服务器上,每个用户都执行以下命令生成 SSH 密钥对。确保他们输入自己的电子邮件地址。

   

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

   这将生成 `id_rsa`(私钥)和 `id_rsa.pub`(公钥)文件。

2. 将每个用户的公钥(`id_rsa.pub` 文件的内容)添加到他们 GitHub 帐户的 SSH 密钥中。

   - 用户可以使用以下命令查看公钥内容:

cat ~/.ssh/id_rsa.pub

   - 复制输出,然后将其添加到 [GitHub SSH 密钥设置页面]。

在服务器上设置 SSH 配置:

1. 在服务器上,你可以在每个用户的 `~/.ssh/config` 文件中设置 GitHub 相关的配置。如果该文件不存在,可以创建它。

touch ~/.ssh/config

2. 编辑 `~/.ssh/config` 文件并添加以下内容,替换 `<username>` 为实际的 GitHub 用户名:

   Host github.com-<username>     HostName github.com     User git     IdentityFile ~/.ssh/id_rsa

   你可以复制这个块并为每个用户更改 `<username>`。

使用 SSH URL 克隆和推送:

现在,每个用户都可以使用他们的 SSH 密钥对通过 SSH 连接到 GitHub。在他们克隆或推送仓库时,他们可以使用 SSH URL:

git clone git@github.com-<username>:username/repo.git

或者在已有的仓库中设置远程 URL:

git remote set-url origin git@github.com-<username>:username/repo.git

这样就可以为每个用户配置独立的 SSH 密钥对,并确保他们之间不会发生冲突。

也许您对下面的内容还感兴趣: