仓库源文站点原文


title: '关于使用Git时push/pull超时, 以及Github访问慢的解决办法' toc: true date: 2019-10-10 21:32:56 categories: Git cover: https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1570726027679&di=9399d91e4f2812b1188d4c409f69caad&imgtype=0&src=http%3A%2F%2Fku.90sjimg.com%2Felement_origin_min_pic%2F00%2F86%2F44%2F4056eb5f135855d.jpg tags: [Git, Github]

description: 最近在使用Git向github提交代码的时候总是卡顿, 出现SSH连接超时的情况, 一开始以为是因为网络缘故, 后来发现是ssh本身配置的问题!

最近在使用Git向github提交代码的时候总是卡顿, 出现SSH连接超时的情况, 一开始以为是因为网络缘故, 后来发现是ssh本身配置的问题!

阅读本篇你将学会:

<br/>

<!--more-->

<br/>

前言

最近一段时间发现在使用git向github提交代码或者拉取代码的时候, 往往要等相当长的一段时间, 甚至有时会出现SSH超时的情况!

如下图, 命令一直停留, 直到超时:

pull卡死

<br/>

一开始以为是因为在国内访问github的时候由于丢包, 或者连接不稳定导致的问题, 所以先使用ssh命令做了一下连接测试:

ssh -T git@github.com

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

最后返回的是可以通过ssh授权! 说明ssh没什么问题!

<br/>

之后又通过mtr命令查看了一下路由和丢包情况, 如图:

mtrGithub

结果显示, 虽然延迟在265ms左右, 但是并没有很严重的丢包! 应该大概率也不会是网络的原因.

<br/>

最后经过查找大量的博客, 最后发现是<font color="#ff0000">由于ssh配置导致的问题!!!</font>

<br/>


一. 解决git连接github超时问题

1. 修改ssh配置[解决问题]

在等待git pull命令超时之后报出了类似: ssh: connect to host github.com port 22: Connection timed out的错误!

原因是: <font color="#ff0000">ssh 阻塞了22端口!</font>

解决方法: <font color="#ff0000">修改 ssh 的配置文件</font>

关于修改配置,存在两种解决方法:

这里选择的后者:

cd ~/.ssh/
vi config

# 在config中添加下面内容
Host github.com  
User git  
Hostname ssh.github.com 
PreferredAuthentications publickey  
IdentityFile ~/.ssh/id_rsa 
Port 443

即: 使用https的443端口进行访问!

对我来说解决了问题! 当然网上还有其他的解决方法, 我试了之后都未解决!

<br/>

2. 先pull再push[未解决]

网上有说先pull(即使提醒Everything is up-to-date)!

但是对于我来说, pull和push一样都会卡死, 所以并未解决我的问题!

<br/>

3. 添加sendpack.sideband属性[未解决]

网上还有解决方法是: 添加sendpack.sideband属性并置为false

# 全局的
git config --global sendpack.sideband false
# 仓库的
git config --local sendpack.sideband false

通过git config --local -l 查看仓库级配置,可以看到有sendpack.sideband这一项并且是置为false的!

git config --local -l

笔者尝试过之后, 还是未解决问题!

<br/>


二. 加速国内Github访问

由于某些原因,国内访问Github会异常缓慢,在clone仓库时甚至只有10k以下的速度,下载半天有时还会失败需要从头再来,甚是让人恼火。

本小节介绍<font color="#ff0000">通过修改系统hosts文件的办法,绕过国内dns解析,直接访问GitHub的CDN节点,从而达到加速的目的.</font>

1. 获取GitHub官方CDN地址

打开https://www.ipaddress.com/

查询以下三个链接的DNS解析地址:

github.com 
assets-cdn.github.com 
github.global.ssl.fastly.net

DNS解析地址

记录下查询到的IP地址!

<br/>

2. 修改系统Hosts文件

修改系统的Hosts文件:

sudo vi /etc/hosts

# 添加下面三行
192.30.253.112    github.com
151.101.72.133    assets-cdn.github.com
151.101.193.194    github.global.ssl.fastly.net

<br/>

注:

<br/>

3. 刷新系统DNS缓存

Linux下:

sudo /etc/init.d/networking restart

<br/>

Windows下:

Windows+X 打开系统命令行(管理员身份)或powershell

运行 ipconfig /flushdns 手动刷新系统DNS缓存:

win刷新系统DNS缓存

<br/>

完成, 现在打开Github,clone一个项目到本地试试吧!

<br/>


附录

参考文章: