Eri*_* S. 5 git ssh cross-platform
我正在尝试设置基于Windows的Web服务器,但是在Mac OSX上进行开发工作.我在Windows服务器上安装了freeSSHd和msysGit,并在我想要的地方设置了一个存储库.我的Mac上也有git,并在那里设置了一个回购.当我尝试通过SSH克隆,拉出或推送到windows repo时,它给了我一个错误,"致命:协议错误:行长字符不好"我在客户端设置遥控器并不重要( Mac OSX)机器 - 我可以将它指向一个不存在的文件夹,它仍然给我这个错误.
我也在一个Linux盒子上试过这个,我坐在那里它完美无缺,所以它不是我的Mac.
我有几个想法:
也许freeSSHd行为不正确(如此处所示)所以我可以为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存储库)?
谢谢!
我还没有做过这种设置(我的 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
Run Code Online (Sandbox Code Playgroud)
这意味着您在该远程设备上尝试的任何 ssh 命令ssh user@remote dir实际上都会调用远程 (PC) 计算机上的该脚本。
(如果是 Perl 脚本,则可以调用它system(your_command)来实际执行您需要的内容)
从该脚本中,您可以显示和控制(和调试)任何可能影响您尝试通过 ssh 执行的命令的结果的环境变量。
请参阅.gitolite/src/gl-auth-command可以通过 ssh 调用的 (Perl) 脚本的示例(前提是它在文件中的公钥之前声明authorized_keys)