xixitalk's snippet

Post Longer Than 140 Characters Tweets

Jul 12, 2013 - Comments

git ssh使用代理

昨天在树莓派上发现通过ssh方式向github.com的代码仓库git push代码一直提示连接github.com的22端口失败。而HTTPHTTPS访问github.com正常,怀疑github.com的22端口被墙了。使用ssh方式的特点是可以不用输入密码,方便在shell里进行自动操作,而https需要输入密码。

树莓派上有socks5代理和http代理,下面配置git ssh通过代理进行git操作。

代理分两个部分,一个是ssh协议的的代理,一个是git协议的代理。

第一部分 配置git协议的代理

配置git socks5代理

git config --global http.proxy 'socks5://127.0.0.1:1081' 
git config --global https.proxy 'socks5://127.0.0.1:1081' 

或者配置git http代理

git config --global https.proxy 'http://127.0.0.1:8080'
git config --global https.proxy 'https://127.0.0.1:8080'

git config --global会保存在.gitconfig文件里,可以用cat检查代理配置,或者用git config --global -l检查也可以。

$cat ~/.gitconfig
[http]
        proxy = socks5://127.0.0.1:1081
[https]
        proxy = socks5://127.0.0.1:1081

取消代理配置

git config --global --unset http.proxy
git config --global --unset https.proxy

第二部分 配置ssh的代理

git ssh通过socks5代理

在Mac OSX上通过SSH代理实现github访问

git ssh通过http代理

利用 HTTPS 代理访问 GitHub

我的配置

通过socks5代理配置比较繁琐,配置后git push成功了一次,但是后面还是一直提示失败,找不到原因。后来改用http代理,代理成功。我的详细配置如下。

安装corkscrew

如果系统里没有安装corkscrew,进行安装。

sudo apt-get install corkscrew

配置ssh的.config

配置~/.ssh/config,如果config没有创建一个。我的http代理是127.0.0.1:8118,用户名是pi

Host github.com
User git
ProxyCommand corkscrew 127.0.0.1 8118 %h %p
IdentityFile /home/pi/.ssh/id_rsa

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。