You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git Daemon over SSH报错:protocol error及连接拒绝问题求助

问题诊断与快速修复

嘿,这个问题其实是典型的协议混用错误,咱们一步步理清楚:

为啥会报错?

你启动的git daemon是用Git原生的git://明文协议工作的,但你客户端却用了ssh://的URL去连它的2222端口——这就好比用微信去打QQ电话,肯定连不上啊!
服务器端的git daemon收到SSH的握手开头(就是那个SSH-字符),完全看不懂,所以直接抛出了protocol error,客户端那边自然就显示连接被拒绝了。

两种解决办法,选一个就行

办法一:老老实实给git daemon用对协议

如果你确实想用git daemon来共享仓库,把客户端的clone命令改成git://协议:

git clone git://<server>:2222/home/gitproxy/git

另外提个醒:git daemon默认是只读的,要是需要推代码,启动的时候得加个参数:

git daemon --port=2222 --verbose --enable=receive-pack

别忘了开服务器防火墙的2222端口,不然客户端还是连不上。

办法二:直接用SSH(更推荐,不用折腾git daemon)

既然你已经配好了SSH密钥,能无密码登gitproxy,还能正常跑git-receive-pack,那完全没必要启动git daemon啊!直接用SSH协议克隆就行:

git clone gitproxy@<server>:/home/gitproxy/git

这种方式用SSH加密传输,安全得多,还不用额外开服务、开端口,完美匹配你现有的配置。

验证一下

用办法二的命令克隆后,你直接拉取、推送都没问题,本质上和你之前测试的git-receive-pack是一个逻辑——Git通过SSH远程调用对方的Git命令来传输数据。


内容的提问来源于stack exchange,提问作者Alexander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:49:33