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]
最近在使用Git向github提交代码的时候总是卡顿, 出现SSH连接超时的情况, 一开始以为是因为网络缘故, 后来发现是ssh本身配置的问题!
阅读本篇你将学会:
<br/>
<!--more--><br/>
最近一段时间发现在使用git向github提交代码或者拉取代码的时候, 往往要等相当长的一段时间, 甚至有时会出现SSH超时的情况!
如下图, 命令一直停留, 直到超时:
<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命令
查看了一下路由和丢包情况, 如图:
结果显示, 虽然延迟在265ms左右, 但是并没有很严重的丢包! 应该大概率也不会是网络的原因.
<br/>
最后经过查找大量的博客, 最后发现是<font color="#ff0000">由于ssh配置导致的问题!!!</font>
<br/>
在等待git pull
命令超时之后报出了类似: ssh: connect to host github.com port 22: Connection timed out
的错误!
原因是: <font color="#ff0000">ssh 阻塞了22端口!</font>
解决方法: <font color="#ff0000">修改 ssh 的配置文件</font>
关于修改配置,存在两种解决方法:
/etc/ssh/ssh_config
中修改全局配置这里选择的后者:
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/>
网上有说先pull(即使提醒Everything is up-to-date
)!
但是对于我来说, pull和push一样都会卡死, 所以并未解决我的问题!
<br/>
网上还有解决方法是: 添加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会异常缓慢,在clone仓库时甚至只有10k以下的速度,下载半天有时还会失败需要从头再来,甚是让人恼火。
本小节介绍<font color="#ff0000">通过修改系统hosts文件的办法,绕过国内dns解析,直接访问GitHub的CDN节点,从而达到加速的目的.</font>
查询以下三个链接的DNS解析地址:
github.com
assets-cdn.github.com
github.global.ssl.fastly.net
记录下查询到的IP地址!
<br/>
修改系统的Hosts文件:
/etc/hosts
C:\Windows\System32\drivers\etc
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/>
Linux下:
sudo /etc/init.d/networking restart
<br/>
Windows下:
Windows+X 打开系统命令行(管理员身份)或powershell
运行 ipconfig /flushdns
手动刷新系统DNS缓存:
<br/>
完成, 现在打开Github,clone一个项目到本地试试吧!
<br/>
参考文章: