2012-09-06 105 views
5

我有一个Git仓库,我拉使用类似这样的路径:GitExtensions +腻子通过SSH自定义端口上

git pull ssh://[email protected]:1234/path/to/repository.git 

当GitExtensions然后尝试使用砰砰回购拉,它使这个调用:

plink -T [email protected]:/path/to/repository.git 

这最终失败,因为它实际上是ping#22端口,而不是#1234。

做出正确的通话将

plink -T -P 1234 [email protected]:/path/to/repository.git 

如果我在的〜/ .ssh/config中创建一个别名“hostCom”,它似乎正常工作(连接#1234),如果我只是做这个:

plink -T [email protected] 

但是,只要我将路径添加到git仓库,它也会再次进入#22。

我尝试的另一个选择是在putty中创建一个会话,我们将其称为“hostPutty”,并将默认端口设置为此等等。底线结束是相同的:虽然:无法将路径与git repo结合自定义端口。

如何合并所有零件以使其工作?

而OpenSSH如何处理这个问题,但腻子不能? OpenSSH唯一的问题是在每次连接尝试时都会向我询问私钥的密码(并且我不想在没有密码的情况下创建私钥)。

回答

9

明白了。

这里是让我错了路:

  • 不要在腻子产生任何会议所概述here
  • 不要使用你可能在定义任何主机别名的〜/ .ssh/config中

这里是你如何得到它的工作:

  • 显然确保GitExtens离子被设置为使用腻子,不OpenSSH的
  • 确保plink.exe(一可用GitExtensions或用腻子专门安装)是不带空格
  • 设置你的环境变量%GIT_SSH%的路径指向砰砰。 exe(它可能指向ssh.exe默认情况下),请确保没有撇号,因为该值将按原样使用(这就是为什么您不能使用上述空格)
c:\>echo %GIT_SSH% 
    C:\tools\PuTTY\plink.exe 
  • 在上面的示例中,使用“完整”命令来拉出,没有允许您不指定端口等的主机别名。如果端口丢失,并且只有一个冒号,那么git将它视为一个路径分隔符,并将ssh作为端口分隔符(因此它们每个都很糟糕)。

    混帐克隆SSH://[email protected]:1234 /路径/到/ repository.git

如果你这样做的Git +砰砰实际上搞清楚这些事情吧!

如果你不这样做,这样,你可能会遇到各种各样的问题,如:

  • 不得不%GIT_SSH%指着ssh.exe和使用主机别名来代替路径含。端口
ssh.exe": hostPutty:path: no address associated with name 
    fatal: The remote end hung up unexpectedly 
  • 在%GIT_SSH%用于撇号
error: cannot spawn "C:\tools\PuTTY\plink.exe": No such file or directory 
    fatal: unable to fork 
0

对于我来说,我一直得到该主机名不存在错误。在尝试了关于这个和其他线程的一堆建议之后,我检查了我的远程URL,这是罪魁祸首。如果您使用的腻子,确保它与[email protected]开始不https://github

Here's an examplpe of how to check this in git extensions

相关问题