当前位置:   article > 正文

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

本地github连接超时

新建了一个仓库,想要执行`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)。

  1. 20.205.243.166 github.com
  2. 20.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时,会报错:

  1. git@github.com: Permission denied (publickey).
  2. fatal: Could not read from remote repository.
  3. Please make sure you have the correct access rights
  4. and 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 用户名:

  1.    Host github.com-<username>
  2.      HostName github.com
  3.      User git
  4.      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 密钥对,并确保他们之间不会发生冲突。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/513419
推荐阅读
相关标签
  

闽ICP备14008679号