【问题标题】:git clone over ssh from remote repository:fatal: protocol error: bad line length character: fatagit clone over ssh from remote repository:fatal: 协议错误: bad line length character: fata
【发布时间】:2014-02-21 15:28:59
【问题描述】:

我已经在 Windows 8 机器上设置了一个 git 服务器

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

git 安装时

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

已设置正确的公钥和私钥并从 服务器到客户端机器

我可以使用 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 的新手,所以不太了解它。谢谢

【问题讨论】:

    标签: git ssh msysgit git-clone


    【解决方案1】:

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

    查看此常见问题解答:

    这可能意味着您在命令模式下登录 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,您应该检查它是否可以执行命令而不返回任何额外的输出。

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

    【讨论】:

    • 当我执行“ssh UserOne@192.168.1.4 echo testing commands”时,我得到的响应是“无法在远程系统上执行命令或shell:无法执行进程。”
    • 谢谢,现在使用 WinSSDH 服务器并能够克隆存储库。这两个链接真的很有帮助。 holyhoehle.wordpress.com/2011/01/26/…holyhoehle.wordpress.com/2011/08/05/…
    • 我对 shell 也很陌生......请你告诉我这是什么意思 $* 在 shell 中
    • @SilverHorse 它代表您传递给脚本的所有参数。在这种情况下,此脚本将执行由所有这些参数组成的命令行。
    • 就我而言,我的远程用户同时拥有 .bash_profile 和 .bash_rc ,其中包含一些 echo 命令。那些标准输出消息搞砸了。
    【解决方案2】:

    问题是,

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      相关资源
      最近更新 更多