解决GitHub上传或连接ssh: connect to host github.com port 22: Connection timed out

问题的前世今生

最近想重新做一下博客的自动工作流,但是发现GitHub上传出现22端口被拒绝的问题,害得我搞了好久才解决这个问题,其实这个问题并不是很复杂,试了网上的很多方法,大部分都解决不了我的这个问题,所以记录一下,以防以后再次遇到这个问题。

问题分析

报错代码如下:

1
ssh: connect to host github.com port 22: Connection timed out

其实这个问题的原因很简单,就是因为GitHub的22端口被禁用了,所以我们可以使用443端口来上传,这里就需要对config文件进行修改,网上有很多配置方法,但是我用了没有效果,所以我就自己写了一个。

方案一:修改hosts文件(推荐)

本方案也可以解决GitHub Copilot 连接失败的问题,报错代码如下:

1
GitHub Copilot could not connect to server. Extension activation failed: "connect ETIMEDOUT 20.205.243.168:443
  • 环境配置

    下载SwitchHosts工具。

  • 安装并运行软件

    点击+新建hosts文件

    image-20230828222314286

  • 具体配置如下;

配置项 填写值
hosts类型 远程
hosts标题 随便写一个自己能区分的名称
URL https://raw.hellogithub.com/hosts
自动刷新 最好选择1小时

image-20230828223749475

  • 注意:这里配置完后,需要点击刷新按钮获取最新的hosts文件配置

    image-20230828224450231

  • 点击右侧的开关按钮,使其配置写入hosts文件

    image-20230828224115620

重新连接github

打开cmd窗口,输入下面的代码,刷新一下CDN

1
ipconfig /flushdns

然后我们就可以重新连接github了,输入以下命令:

1
ssh -T git@github.com

如果出现以下内容,就说明连接成功了:

1
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

方案二:修改config文件使用GitHub的443端口(不推荐)

首先我们需要找到config文件,我的在C:\Users\用户名\.ssh目录下,如果没有就自己创建一个,然后在里面写入以下内容:

1
2
3
4
5
6
Host github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443

重新连接github

打开cmd窗口,输入下面的代码,刷新一下CDN

1
ipconfig /flushdns

然后我们就可以重新连接github了,输入以下命令:

1
ssh -T git@github.com

如果出现以下内容,就说明连接成功了:

1
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.