我正在尝试设置基于Windows的Web服务器,但是在Mac OSX上进行开发工作。我在Windows服务器上安装了freeSSHd和msysGit,并在我想要的地方设置了一个存储库。我的Mac上也有git,并在那里设置了一个回购。当我尝试通过SSH克隆,拉出或推送到windows repo时,它给了我一个错误,“致命:协议错误:线路长度错误字符”我在客户端设置遥控器并不重要( Mac OSX)机器 - 我可以将它指向一个不存在的文件夹,它仍然给我这个错误。
我也在一个Linux盒子上试过这个,我坐在那里它完美无缺,所以它不是我的Mac。
我有几个想法:
也许freeSSHd行为不正确(as suggested here)所以我可以为Windows获得不同的SSH服务器 - 也许是OpenSSH
也许我正在输入错误地合并Mac和Windows文件路径的代码。我试过了:
sudo git clone ssh://username@xx.xxx.xxx.xxx/C:/ Users / [my_username] / [remote_repo_name] /.git [destination]
和
sudo git clone ssh://username@xx.xxx.xxx.xxx/C:\ Users \ [my_username] \ [remote_repo_name] \ .git [destination]
我对这两个错误都有同样的错误。
有人知道出了什么问题吗?更好的是,有没有人设法做我想做的事(通过SSH推送到Windows存储库)?
谢谢!
答案 0 :(得分:2)
我没有做过那种设置(我的ssh服务器是Solaris10),但我在尝试设置 gitolite 时发现了大多数ssh错误。
ssh user@remote git --version
起作用%HOME%/.ssh/authorized_keys
文件您不能只在那里复制公钥(即“authorized_keys
”),但您也可以引用一个脚本来执行ssh命令:
> more authorized_keys
command="path/to/any/script/you/want" ssh-rsa AAAAB3N;...A_long_key..J6U19Jsf/kuO99XIrNE4ePzHw== username@pc_hostname
意味着您将尝试在远程ssh user@remote dir
上执行的任何ssh命令实际上将在远程(PC)计算机上调用该脚本。
(如果是Perl脚本,则可以调用system(your_command)
来实际执行您需要的内容)
从该脚本中,您可以显示和控制(和调试)任何可能影响您尝试通过ssh执行的命令结果的环境变量。
请参阅.gitolite/src/gl-auth-command
作为您可以通过ssh调用的(Perl)脚本的示例(前提是它在authorized_keys
文件中的公钥之前声明)
答案 1 :(得分:0)
只是提出一些令人发指的事情,不使用ssh而是使用文件共享。 Mac可以访问Windows共享,git可以在物理路径上运行(这就像Windows共享一样)。