ssh代理问题

git clone 分两种情况

  • 他人的开源项目:git clone https://github.com/bragefuglseth/keypunch
  • 自己免密码的:git clone git@github.com:bragefuglseth/keypunch.git

git clone https://github.com

前一种,正常设置终端的代理就行,

比如在linux,~/.bashrc 或者 ~/.zshrc 在中最上方添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function proxy_on() {
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
export ALL_PROXY="socks5://127.0.0.1:7890"
echo -e "已开启代理"
}

function proxy_off(){
unset http_proxy
unset https_proxy
echo -e "已关闭代理"
}

proxy_on

git clone git@github.com

需要在 ~/.ssh/config 添加如下内容

1
2
3
4
5
Host github
Port 443
HostName ssh.github.com
ProxyCommand proxytunnel -p 127.0.0.1:7890 -d %h:%p
IdentityFile ~/.ssh/id_rsa

其中 proxytunnel 需要安装。

网上内容要注意的是

  • HostNamessh.github.com 而不是 github.com
  • Port443
  • ProxyCommandproxytunnel,所以需要安装这个 proxytunnel,linux直接用系统安装命令即可,比如archlinux: sudo pacman -S proxytunnel
  • 127.0.0.1:7890 换成你的代理地址,并且拦截 github.com 后缀地址,比如对于mihomo或者clash添加如下:- DOMAIN-SUFFIX,github.com,PROXY

部分参考 Enabling SSH connections over HTTPS


本文作者:yuhldr
本文地址: https://yuhldr.github.io/posts/d6442a48.html
版权声明:转载请注明出处!