3

我已经在 Windows 8 机器上设置了一个 git 服务器,其中包含以下内容

  • msysgit(在客户端和服务器上)
  • FreeSSHd(在服务器上)

git安装时

  • 在服务器(Windows 8)上,我选择安装目录为 d:\Experiments\Git
  • 在客户端(Windows 7)我选择它是默认的,即 ProgramFiles(x86)

已设置正确的公钥和私钥并将 perivate 密钥从服务器复制到客户端计算机

我可以使用 ssh 命令通过 SSH 连接到我的服务器

$ ssh UserOne@192.168.1.4
Enter passphrase for key '/c/Users/UserOne/.ssh/id_rsa':
UserOne@192.168.1.4's password:

上面的结果是

Microsoft Windows [Version 6.2.9200]
(c) 2012 Microsoft Corporation. All rights reserved.

C:\Users\Gaurav\Desktop>

但是当我尝试 git clone 我的远程存储库时出现错误...以下是我执行的命令以及执行后的结果

$ git clone ssh://UserOne@192.168.1.4/d/Experiments/repo/CenRepo /d/Experiments/Playground/New
Cloning into 'd:/Experiments/Playground/New'...
Enter passphrase for key '/c/Users/UserOne/.ssh/id_rsa':
UserOne@192.168.1.4's password:
fatal: protocol error: bad line length character: fata

我在一些文章上看到执行 git-receive-pack,如果有任何路径问题,它实际上会输出错误..但它运行良好..以下是命令及其结果。

$ ssh UserOne@192.168.1.4 git-receive-pack d:/Experiments/repo/CenRepo
Enter passphrase for key '/c/Users/UserOne/.ssh/id_rsa':
UserOne@192.168.1.4's password:
00900000000000000000000000000000000000000000 capabilities^{}  report-status delete-refs side-band-64k quiet ofs-delta agent=git/1.8.3.msysgit.00000

请注意我输入“d:/Experiments/repo/CenRepo”而不是“/d/Experiments/repo/CenRepo”

我不能在 git clone 命令中写“d:/Experiments/repo/CenRepo”

我是 git 的新手,所以不太了解它。谢谢

4

2 回答 2

2

致命:协议错误:错误的行长字符:胖

请参阅此常见问题解答:

这可能意味着您在以命令模式登录 ssh 时有一些无关的字符、信息消息或其他内容。

要对此进行测试,请执行以下操作:

 ssh user@git.example.com echo testing commands

(在你的情况下:)

ssh UserOne@192.168.1.4 echo testing commands

您应该只看到 ' testing commands' 返回。
如果有任何其他字符,您应该检查您的 dot shell rc 文件以查找任何 echo 或其他可能产生输出的命令。

对于 FreeSSHd,您应该检查它是否可以在不返回任何额外输出的情况下执行命令。

这个答案表明可能无法将 FreeSSHd 配置为“安静”(执行并返回所需命令的输出,无需额外数据)。
它建议使用替代 ssh 守护程序。

于 2013-06-25T12:32:13.157 回答
1

问题是,

如果您更改 ~/username/.bashrc .. 或任何 bash 文件内容,请删除所有回显和另一个字符串输出,然后尝试通过 git 再次连接,一切都会好的。

当您通过 ssh 登录时,如果远程服务器或本地服务器(您可以在本地使用 git)打印到 shell 屏幕额外输出。这是 git 的问题。

于 2014-02-21T07:28:59.263 回答