Skip to content

Instantly share code, notes, and snippets.

@chenshengzhi
Last active August 29, 2025 05:35
Show Gist options
  • Save chenshengzhi/07e5177b1d97587d5ca0acc0487ad677 to your computer and use it in GitHub Desktop.
Save chenshengzhi/07e5177b1d97587d5ca0acc0487ad677 to your computer and use it in GitHub Desktop.
git ssh 代理设置

仅为 GitHub 设置代理

git 代理

设置 git config --global http.https://git.521000.best.proxy socks5://127.0.0.1:1086
设置完成后, ~/.gitconfig 文件中会增加以下条目:

[http "https://github.com"]
    proxy = socks5://127.0.0.1:1086
ssh 代理

修改 ~/.ssh/config 文件

Host github.com
    User git
    ProxyCommand nc -v -x 127.0.0.1:1086 %h %p
@H-YWu
Copy link

H-YWu commented Jan 10, 2024

在 Windows 下使用 ProxyCommand connect 设置现在 Powershell 中用 ssh 连接 git 失效,pull 和 push 都失败,命令

ssh -T git@github.com

返回错误:

CreateProcessW failed error:2
posix_spawnp: No such file or directory

但是使用 git bash 进行连接却是正常的,请问这是什么原因呢?以前这个设置在 Powershell 中也能用

@Deali-Axy
Copy link

在 Windows 下使用 ProxyCommand connect 设置现在 Powershell 中用 ssh 连接 git 失效,pull 和 push 都失败,命令

ssh -T git@github.com

返回错误:

CreateProcessW failed error:2
posix_spawnp: No such file or directory

但是使用 git bash 进行连接却是正常的,请问这是什么原因呢?以前这个设置在 Powershell 中也能用

我的配置

Host github.com
  ProxyCommand connect -H 127.0.0.1:7890 -a none %h %p
  User git
  Port 22
  Hostname github.com
  IdentityFile "C:\Users\u\.ssh\id_rsa"
  TCPKeepAlive yes

Host ssh.github.com
  ProxyCommand connect -H 127.0.0.1:7890 -a none %h %p
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\u\.ssh\id_rsa"
  TCPKeepAlive yes

我遇到的问题

GitBash

Windows Powershell

无论输入哪个都提示

CreateProcessW failed error:2
posix_spawnp: No such file or directory

@TeslaChow
Copy link

ssh over https提到域名改成ssh.github.com了

Host github.com
Hostname ssh.github.com
Port 443
User git

使用win11+clash,配置在ssh的config中这样配置有用,在打开或关闭代理都可以使用git

@Deali-Axy
Copy link

经过不断的尝试,我找到找到了属于我的正确配置方法

Host github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

Host ssh.github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

使用 ssh 命令测试没问题,实际使用也正常了

$ ssh -T [email protected]
Hi Deali-Axy! You've successfully authenticated, but GitHub does not provide shell access.

@TeslaChow
Copy link

经过不断的尝试,我找到找到了属于我的正确配置方法

Host github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

Host ssh.github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

使用 ssh 命令测试没问题,实际使用也正常了

$ ssh -T [email protected]
Hi Deali-Axy! You've successfully authenticated, but GitHub does not provide shell access.

我一开始使用
Host github.com
User git
Hostname github.com
IdentityFile "C:\Users\用户名.ssh\id_rsa"
ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p
这个配置,期间还更换S为H,或者更换端口号7890到7891,都不成功,就很奇怪,不知道哪里的问题

@Deali-Axy
Copy link

经过不断的尝试,我找到找到了属于我的正确配置方法

Host github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

Host ssh.github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

使用 ssh 命令测试没问题,实际使用也正常了

$ ssh -T [email protected]
Hi Deali-Axy! You've successfully authenticated, but GitHub does not provide shell access.

我一开始使用 Host github.com User git Hostname github.com IdentityFile "C:\Users\用户名.ssh\id_rsa" ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p 这个配置,期间还更换S为H,或者更换端口号7890到7891,都不成功,就很奇怪,不知道哪里的问题

就是得把 github.com 设置成走ssh.github.com和443端口才行,应该是后来才改的

@rickywu
Copy link

rickywu commented Jan 19, 2024

大多数防火墙规则应允许此操作,但代理服务器可能会干扰。就是你的木第子可能会阻止
只有改成443端口
另外我亲测ProxyCommand connect -H 127.0.0.01:10081 %h %p,这个才有效,改成-S则不行

@xiaotianhu
Copy link

mac 配合clashX的7890 socks5配置:

Host github.com
Hostname ssh.github.com
Port 443
User git
ProxyCommand nc -v -x 127.0.0.1:7890 %h %p

@lulinglingcufe
Copy link

@Deali-Axy 你的方法太好了,我搞好了,谢谢!!!!!!就是这个:
Host github.com
User git
Port 443
Hostname ssh.github.com
IdentityFile "C:\Users\用户名.ssh\id_rsa"
TCPKeepAlive yes
ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

Host ssh.github.com
User git
Port 443
Hostname ssh.github.com
IdentityFile "C:\Users\用户名.ssh\id_rsa"
TCPKeepAlive yes
ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

@migumigu112
Copy link

$ ssh -T [email protected]
/ usr / bin / bash:第0行:exec:nc:找不到
kex_exchange_identification:连接被远程主机关闭
未知端口65535关闭了连接

不行

好像你的系统里没有nc这个命令

我找了网上很多教程,最后设置成功了,很简单,现在的git bash里面都包含了connect.exe这个软件,位置在bin下,你只要配置一个config可以了 vi ~/.ssh/config

ProxyCommand connect -S 127.0.0.1:10801 -a none %h %p

Host github.com
  User git
  Port 22
  Hostname github.com
  # 注意修改路径为你的路径
  IdentityFile "C:\Users\One\.ssh\id_rsa"
  TCPKeepAlive yes

Host ssh.github.com
  User git
  Port 443
  Hostname ssh.github.com
  # 注意修改路径为你的路径
  IdentityFile "C:\Users\One\.ssh\id_rsa"
  TCPKeepAlive yes

然后就可以使用ssh,测试方法是 ssh -T [email protected],返回successful之类的就成功了

有效,感谢

成功了 感谢 十分感谢

@SLKun
Copy link

SLKun commented Feb 23, 2024

ssh也可以给shell加这个环境变量, nc需要是openbsd的netcat, 而不是gnu的

export GIT_SSH_COMMAND='ssh -o ProxyCommand="nc -X 5 -x 127.0.0.1:1080 %h %p"'

@Iridescent-zhang
Copy link

经过不断的尝试,我找到找到了属于我的正确配置方法

Host github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

Host ssh.github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

使用 ssh 命令测试没问题,实际使用也正常了

$ ssh -T [email protected]
Hi Deali-Axy! You've successfully authenticated, but GitHub does not provide shell access.

you are my hero!

@Iridescent-zhang
Copy link

经过不断的尝试,我找到找到了属于我的正确配置方法

Host github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

Host ssh.github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

使用 ssh 命令测试没问题,实际使用也正常了

$ ssh -T [email protected]
Hi Deali-Axy! You've successfully authenticated, but GitHub does not provide shell access.

我一开始使用 Host github.com User git Hostname github.com IdentityFile "C:\Users\用户名.ssh\id_rsa" ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p 这个配置,期间还更换S为H,或者更换端口号7890到7891,都不成功,就很奇怪,不知道哪里的问题

就是得把 github.com 设置成走ssh.github.com和443端口才行,应该是后来才改的

感觉关键不是ssh.github.com,而是443

@UshioA
Copy link

UshioA commented Apr 13, 2024

为gitlab配置类似的代理:

Host gitlab.com
	User git
	Port 443
	Hostname altssh.gitlab.com
	IdentityFile ~/.ssh/id_ed25519
	IdentitiesOnly yes
	ProxyCommand nc -X connect -x localhost:1080 %h %p

@luoyinong
Copy link

经过不断的尝试,我找到找到了属于我的正确配置方法

Host github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

Host ssh.github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

使用 ssh 命令测试没问题,实际使用也正常了

$ ssh -T [email protected]
Hi Deali-Axy! You've successfully authenticated, but GitHub does not provide shell access.

我一开始使用 Host github.com User git Hostname github.com IdentityFile "C:\Users\用户名.ssh\id_rsa" ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p 这个配置,期间还更换S为H,或者更换端口号7890到7891,都不成功,就很奇怪,不知道哪里的问题

这个有用, 之前一直报
CreateProcessW failed error:2
posix_spawnp: No such file or directory

@evan4C
Copy link

evan4C commented Jul 22, 2024

mac 配合clashX的7890 socks5配置:

Host github.com Hostname ssh.github.com Port 443 User git ProxyCommand nc -v -x 127.0.0.1:7890 %h %p

这个方法对我有用,感谢

@WenHv587
Copy link

经过不断的尝试,我找到找到了属于我的正确配置方法

Host github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

Host ssh.github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

使用 ssh 命令测试没问题,实际使用也正常了

$ ssh -T [email protected]
Hi Deali-Axy! You've successfully authenticated, but GitHub does not provide shell access.

这个对我有用。Windows10

@jon9527
Copy link

jon9527 commented Jul 31, 2024

ssh over https提到域名改成ssh.github.com了

Host github.com
Hostname ssh.github.com
Port 443
User git

感谢,非常有用。

确实有用,mac+clash+tun模式成功测试。谢谢

@suyanhj
Copy link

suyanhj commented Oct 8, 2024

ssh -T [email protected]

好用

@shilohooo
Copy link

经过不断的尝试,我找到找到了属于我的正确配置方法

Host github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

Host ssh.github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\用户名\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand "C:\Users\用户名\scoop\apps\git\current\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p

使用 ssh 命令测试没问题,实际使用也正常了

$ ssh -T [email protected]
Hi Deali-Axy! You've successfully authenticated, but GitHub does not provide shell access.

Thank you very much:)

@gatspy
Copy link

gatspy commented Jun 29, 2025

connect 总是会卡住。。。

@572996313
Copy link

改完这些 最后发现我是DNS 不对
nslookup github.com 可以看解析的对不对

@vcheckzen
Copy link

在 Windows 下使用 ProxyCommand connect 设置现在 Powershell 中用 ssh 连接 git 失效,pull 和 push 都失败,命令

ssh -T git@github.com

返回错误:

CreateProcessW failed error:2
posix_spawnp: No such file or directory

但是使用 git bash 进行连接却是正常的,请问这是什么原因呢?以前这个设置在 Powershell 中也能用

如果 gitsh 命令在系统 PATH 里,通过下面的命令检测

PS > scoop which sh
~\scoop\apps\git\current\bin\sh.exe

PS > sh -l -c "which connect"
/mingw64/bin/connect

那么下面的配置在 Git BashPowerShell 里都可以工作

Host github.com
  HostName 	      ssh.github.com
  Port            443
  User            git
  IdentityFile    ~/.ssh/pri_gh
  # -H HTTP_PROXY, -S SOCK5_PROXY
  ProxyCommand    sh -c "connect -H 127.0.0.1:10802 %h %p"

Git Bash

$ ssh -T github.com
Hi <name>! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T [email protected]
Hi <name>! You've successfully authenticated, but GitHub does not provide shell access.

PowerShell

> ssh -T github.com
Hi <name>! You've successfully authenticated, but GitHub does not provide shell access.

> ssh -T [email protected]
Hi <name>! You've successfully authenticated, but GitHub does not provide shell access.

@vrqq
Copy link

vrqq commented Aug 29, 2025

补充Redhat 9环境下socks4代理用法 (使用V2RayA)

Host github.com
    User git
    ProxyCommand nc --proxy-type socks4 --proxy 127.0.0.1:20170 %h %p

检验

[vrqq@apm3 ~]$ ssh [email protected]
PTY allocation request failed on channel 0
Hi vrqq! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment