为什么我的'git fetch'超过cygwin ssh连接不起作用?

时间:2011-10-13 13:28:01

标签: git ssh cygwin

我有两台电脑,比如notebookdesktop。两者都安装了gg和msysgit的cygwin。

当我在desktop上并从cygwin命令窗口执行git fetch origin时,一切正常,以及来自msysgit控制台的git fetch origin

但是当我使用cygwin SSH客户端从desktop SSH notebook然后从SSH会话中执行git fetch origin时,我得到了

error: could not open '//path/to/origin.git'
fatal: Could not read bundle '//path/to/origin.git'.

假设这是一个权利问题,因为我访问的共享对每个人都不可读,但仅限于某些用户。我认为,当通过SSH访问desktop时,我与{I}直接访问共享时的用户不同。

如何让cygwin中的正确用户访问受保护的共享?


编辑虽然声称这个问题与'X' does not appear to be a git repository (I'm sure the path is correct)重复,但我没有看到与该问题的任何关系。


编辑:如果重要:

  • cygwin git的版本为1.7.5.1
  • cygwin ssh是OpenSSH_5.8p1,OpenSSL 0.9.8r 2011年2月8日
  • msysgit的版本为1.7.6.msysgit.0

1 个答案:

答案 0 :(得分:1)

使用Active Directory进行集中用户管理的Windows使用Kerberos票证来验证对共享的访问权限。由于特权进程可以将本地凭据更改为指定用户,因此使用ssh登录可能不会通过Kerberos,在这种情况下,您将能够像往常一样在本地执行任何操作,但共享将无法识别您。

如果您使用公钥身份验证,它永远不会通过Kerberos,因此您永远无法访问共享(每个人都无法访问)。

如果您使用密码,则必须通过Kerberos。我相信系统可以访问共享,但我不确定,因为从Windows的角度来看,它仍然没有定期登录。

如果使用正确的选项进行编译并链接到Kerberos库,OpenSSH实际上支持使用Kerberos票证进行身份验证。但是上次我看了cygwin ssh是编译的那种方式,并且无法与Active Directory集成。但它仍然是cygwin 1.5,所以它可能已经实施了。

无论如何,我建议使用远程桌面协议登录桌面。 Linux也有工作客户端。缺点是它的GUI,所以它不是可编写脚本的。如果你连接RDP,你也可能会有一些运气,所以你实际上已经登录,把它放到后台并与ssh并行登录,但我没试过,所以我不确定。

我还成功使用了Unix Kerberos实现从Active Domain获取票证(有一些怪癖,例如域名必须以大写字母输入,但没有太复杂)并使用Samba中的Kerberos支持连接到共享来自Unix。