在Windows上的Mercurial“hg clone”通过ssh与plink问题

我有一台Windows Server 2008机器(iis7),它已经安装了CopSSH。 要连接到它,我有安装了Mercurial 1.5.1(和TortoiseHg)的Windows 7机器。

我可以连接到服务器使用PuTTY非标准的SSH端口和.ppk文件就好了。 所以我知道服务器可以通过SSH进入。

接下来,我想使用CLI通过hg克隆连接来获得私人回购。 我在其他地方看到你需要在你的mercurial.ini文件中configurationssh,所以我的mercurial.ini有一行: ssh = plink.exe -ssh -C -l username -P #### -i "C:/Program Files/PuTTY/Key Files/KyleKey.ppk"
注意:
username用我通过copSSH设置的用户名填写。
####用我为copSSH定义的非标准ssh端口填充。

我尝试执行命令hg clone ssh://inthom.com但是我得到这个错误:
remote: bash: inthom.com: command not found
abort: no suitable response from remote hg!

它看起来像hg或plinkparsing主机名,这样它认为inthom.com是一个命令,而不是服务器ssh到。 真奇怪

接下来,我试图用plink连接plink -P #### ssh://inthom.com ,然后提示input我的用户名和下一个密码。 我input他们,然后我得到这个错误:
bash: ssh://inthom.com: No such file or directory

所以现在看起来像plink不能正确parsing主机名。

我弄了一会儿,试图弄清楚如何用空的ssh://字段调用hg clone,最后发现这个命令允许我访问服务器,并在inthom.com服务器上克隆testing回购:
hg clone ssh://!/Repos/test

! 是我发现的字符,让我留下主机名为空,但指定要克隆的repo文件夹。

我真的不明白的是,plink如何知道什么服务器ssh。 我的mercurial.ini也没有命令指定一个服务器。 没有一个我见过的hg clone例子有一个! 字符。 他们都使用一个地址,这是有道理的,所以你可以连接到任何你想克隆的通过SSH的回购。

我唯一的猜测是,它默认的最后一个服务器,我用PuTTY SSH来,但我SSH'd到另一台服务器,然后试图使用Plink去,但Plink仍然默认为inthom.com(validation与-v arg到plink)。 所以我不知道plink如何获得这个服务器的价值。

对于“乐趣”,我尝试使用TortoiseHg,并且只能在使用ssh://!/Repos/test作为源时克隆回购。

现在,你可以看到,由于plink不能正确parsing主机名,所以我必须在mercurial.ini文件中指定端口号和用户名,而不是像username@inthom.com这样的主机名:#### like你会期望。 试图弄清楚这一点开始我疯了,因为我会得到错误,主机不能达成,我知道不应该是这样的。

我的问题是如何configuration我的设置,以便ssh://username@inthom.com:#### / Repos / test正确parsing为用户名,主机名,端口号和回购副本? 我使用的plink版本有问题吗,或者是我可能弄错了一些设置? 如果是plink的错,有没有其他的工具可以使用?

我会试着让我的朋友build立连接到这个相同的回购,所以我想有一个干净的解决scheme,而不是这个! 商业。 特别是当我不知道plink如何获得这个默认服务器,所以我不知道他甚至能够正确地进入inthom.com。

PS。 我不得不使用大量不同的教程甚至到达这个阶段。 因此,我还没有尝试过对服务器进行任何更改。 希望我会得到这个想法,然后我可以尝试推动更改回购。

我知道我迟到了,但现在好了再也不会。 好的,所以…连接到Mercurial SSH的命令

ssh = plink.exe -ssh -C -l username -P #### -i“C:/ Program Files / PuTTY / Key Files / KyleKey.ppk”

是完全正常的,但问题是与Plink。

Plink在名称中有空格的文件夹有问题。 所以,问题在于

“C:/ Program Files / PuTTY / Key Files / KyleKey.ppk”

你有两个选择:

  1. 您可以将此“KyleKey.ppk”文件移动到名称中没有空格的路径中。 例如,您可以在“C:\”或“D:\ Path \ Without \ Space \ In \ Name”中移动此文件。

  2. 您可以使用Windows短路径名称。 例如,我有

    ssh =“C:\ Progra〜2 \ Plink \ Plink.exe”-ssh -i“C:\ Progra〜2 \ PuTTYgen \ hrle.ppk”

    在我的“Mercurial.ini”。

    “C:\ Progra〜2”是“C:\ Program Files(x86)”。

如果SSH私钥被密码保护,Plink将挂起。

而且,在使用Plink和TortoiseHg或MercurialEclipse等其他GUI工具之前,您必须添加此服务器以了解服务器列表。 如果你没有这样做,Plink会挂起等待你的回应,你不能给予,因为你使用TortoiseHg而不是命令行。 更多关于AccessingSshRepositoriesFromWindows的这个subjet。

使用plink你不需要使用ssh://协议标识符。 您可以简单地使用{用户} @ {主机}:{路径}格式,它会正常工作。

例:

plink -ssh -C -l {username} -pw {pass} -P 22 -i“C:/ Program Files / PuTTY / Key Files / KyleKey.ppk”inthom.com:/Repos/test

用用户名替换{username},用密码替换{pass}。

哟,我有同样的问题。 我的设置出了什么问题,plink使用的是在putty中设置的默认服务器,而不是我提供的服务器。 我不得不打开腻子,并删除默认的服务器,然后保存。 尝试使用没有服务器的plink ..如果你的命令通过,你有一个默认的服务器..