Windows SSH连接GitHub报错解决方法

606 阅读4分钟

众所周知,github那玩意现在不支持账号密码进入了。

于是,在新电脑了用了ssh连接方式。

一切就绪,啥ssh都搞好了,结果来了报错,您来瞧一瞧这报错:

$ git pull
kex_exchange_identification: read: Connection reset by peer
Connection reset by 20.205.243.160 port 22
fatal: Could not read from remote repository.

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

大概是这么个报错,说连接啥这个ip这个端口,不能读到这个目录。一来,叫我去确认一下是不是有正确的进去的权利;二去,叫我去看这个git地址对不对,存不存在。

二话不说,我有事要办,于是,我就删了那个电脑的ssh,重新建一个,跟github那边再重新弄一遍,肯定是我哪里哪个步骤搞得不对头,导致人家不给我git github的东西。

重来一遍,还是报错,我得贴一遍那个报错给大家看看,虽说上边是有贴码了,报错如下:

image.png

就八九差不离是这意思,

C:\Windows\System32>git克隆git@github.com:GuanLola/interview-doc.git 克隆到“面试文档”. 20.205.243.166端口22关闭连接 致命:无法从远程存储库读取。 请确保您拥有正确的访问权限 并且存储库存在。

文档也由私有改成公开,还是这个样子。

那不行啊。git 报错 Connection reset by 20.205.243.160 port 22 解决。这问题解决不了,我做不了事啊。于是去查,很多教程都是说有可能就是我那个ssh连接github的步骤没弄对。可我试了几遍了,不行,那估计不是那个sshkey的毛病。想着说读不到那个仓库。

我说是啊,国内咱不是都是靠啥,靠魔法过去的吗?

好家伙,有可能是墙的问题,于是我去搞了那个host地址,估计也不成,那个ip解析那个域名地址全是要开魔法才能进去的,就是该hosts文件也无济于事啊。

后来想说,确实,这个咱开了代理,估计要往代理上去想问题了。

后来去查 github ssh,果真有苗头。

window要工具去代理一下ssh连接才行。

这个工具找到了用的这个connect这个工具。地址是这里,点开就给自动下载了。下完之后呢,甭管双击点击安装这事了,双击打开也是这种样子:

image.png

它估计不是这样做的,不用咱双击去运行安装之类的。

1. 下载 connect 工具

connect 工具是 corkscrew 的一个替代品,可以用来通过 HTTP/HTTPS 代理进行 SSH 连接。你可以在以下链接下载 Windows 版本的 connect 工具:

下载后,将 connect.exe 放到一个你喜欢的目录,比如 C:\Program Files\connect

2. 配置 SSH 使用 connect 工具

接下来,你需要编辑 SSH 配置文件,以便使用 connect 工具通过代理连接 GitHub。

  1. 打开 Git Bash 或任何你喜欢的终端。

  2. 编辑 ~/.ssh/config 文件(如果文件不存在,可以创建一个):

    bash

    Copy

    notepad ~/.ssh/config
    
  3. 在 ~/.ssh/config 文件中添加以下内容:

    plaintext

    Copy

    Host github.com
        HostName ssh.github.com
        User git
        Port 443
        IdentityFile ~/.ssh/id_rsa
        ProxyCommand "C:/Program Files/connect/connect.exe" -H 127.0.0.1:7890 %h %p
    

    注意:C:/Program Files/connect/connect.exe 是你下载的 connect.exe 的路径,请根据实际情况修改。127.0.0.1:7890 是你的代理地址和端口,如果你使用的是其他代理工具(如 Clash、Shadowsocks 等),请根据实际情况修改。

3. 测试连接

保存配置文件后,你可以通过以下命令测试是否能够成功连接 GitHub:

bash

Copy

ssh -T git@github.com

如果一切正常,你应该会看到类似以下的输出:

plaintext

Copy

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

4. 拉取代码

现在你应该可以正常使用 git pull 或 git clone 等命令了。

bash

Copy

git pull origin main

其他注意事项

  • 如果你使用的是其他代理工具(如 Clash、Shadowsocks 等),请确保代理工具已经正确配置并运行。
  • 如果你使用的是 HTTP 代理而不是 SOCKS 代理,请确保 connect 工具的 -H 参数正确配置。

通过以上步骤,你应该能够在 Windows 上通过代理使用 SSH 连接 GitHub。


对了,以此,上面被墙了的话,先是这步ssh -T git@github.com就过不去的。如果,比如说去git东西git不动了,先运行一下ssh -T git@github.com这行代码,这行代码要是

image.png

这样的话,就说明一是ssh到git上没过,二是被墙了,你本地用的魔法代理去连的那边,所以也要一些东西去代理ssh连接。

至于代理的那些地址啊端口啊,去设置-网络-代理那里去找。

好嘞!咱就到这了,拜了个拜。