繁体   English   中英

Windows上通过ssh的Mercurial“ hg clone”(带有plink问题)

[英]Mercurial “hg clone” on Windows via ssh with plink issue

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

我可以使用带有非标准ssh端口和.ppk文件的PuTTY连接到服务器。 因此,我知道服务器可以通过SSH登录。

接下来,我想使用CLI通过hg clone连接以获得私有存储库。 我在其他地方看到过,您需要在mercurial.ini文件中配置ssh,所以我的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或plink解析了主机名,以至于它认为inthom.com是命令而不是要SSH的服务器。 真的很奇怪

接下来,我尝试仅使用plink通过plink -P #### ssh://inthom.com进行连接,然后提示我输入用户名和下一个密码。 我都输入它们,然后出现此错误:
bash: ssh://inthom.com: No such file or directory

因此,现在看来plink无法正确解析主机名。

我摆弄了一段时间,试图弄清楚如何用一个空的ssh://字段调用hg clone,最终弄清楚了该命令使我可以到达服务器并在inthom.com服务器上克隆测试仓库:
hg clone ssh://!/Repos/test

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

我真正不明白的是,plink完全不知道要使用哪个服务器。 我的mercurial.ini和命令都未指定服务器。 我见过的所有hg clone示例都没有! 字符。 它们都使用一个有意义的地址,因此您可以通过要克隆的ssh连接到任何存储库。

我唯一的猜测是它以某种方式默认为我使用PuTTY进行SSH交换的最后一台服务器,但是我SSH到另一台服务器,然后尝试使用plink来访问它,但plink仍默认为inthom.com(已通过验证) -v arg进行链接)。 因此,我对plink如何获得此服务器值一无所知。

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

现在,您可以看到,由于plink不能正确解析主机名,因此我不得不在mercurial.ini文件中指定端口号和用户名,而不是在诸如username@inthom.com这样的主机名中指定:#### like您会期望的。 起初试图弄清楚这一点使我发疯,因为我会收到无法到达主机的错误,我知道事实并非如此。

我的问题是如何配置我的设置,以便将ssh://username@inthom.com:#### / Repos / test正确解析为用户名,主机名,端口号和要复制的存储库? 我使用的plink版本是否有问题,或者我可能搞砸了某些设置? 如果是plink的错,是否可以使用其他工具?

我将尝试建立我的朋友以连接到同一仓库,所以我想有一个干净的解决方案,而不是这个! 商业。 尤其是当我不知道plink如何获得此默认服务器时,因此我不确定他是否能够正确访问inthom.com。

PS。 我不得不使用大量不同的教程才能达到这一阶段。 因此,我还没有尝试对服务器进行任何更改。 希望我能弄清楚这一点,然后我可以尝试将更改推送到存储库。

我知道我来晚了,但现在好了,再也没有了。 好的,所以...用于连接到Mercurial SSH的命令

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

完全可以,但是问题出在Plink。

Plink的名称中包含空格的文件夹存在问题。 所以,问题出在

“ C:/程序文件/ PuTTY /密钥文件/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或其他一些GUI工具(如MercurialEclipse)结合使用之前也是如此。 如果您不这样做,Plink将挂起等待您的响应,您将无法给出响应,因为您使用的是TortoiseHg,而不是在命令行中。 有关此子项目的更多信息,请参见AccessingSshRepositoriesFromWindows

使用plink时,您无需使用ssh://协议标识符。 您可以简单地使用{user} @ {host}:{path}格式,即可正常使用。

例:

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

将{username}替换为用户,并将{pass}替换为密码。

哟,我有同样的问题。 我的设置存在问题,是plink使用的是腻子中的默认服务器,而不是我提供的默认服务器。 我必须打开腻子并删除默认服务器,然后保存。 尝试在没有服务器的情况下使用plink。如果您的命令通过,则您具有默认服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM