我有一台安装了CopSSH的Windows Server 2008计算机(iis7)。为了连接它,我安装了一台安装了Mercurial 1.5.1(和TortoiseHg)的Windows 7机器。
我可以使用PuTTY连接到服务器,使用非标准的ssh端口和.ppk文件。所以我知道服务器可以通过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如何知道什么服务器ssh。我的mercurial.ini和命令都没有指定服务器。我见过的hg clone
个例子都没有!
个字符。它们都使用了一个有意义的地址,因此你可以通过你想要克隆的ssh连接到任何 repo。
我唯一的猜测是它以某种方式默认为我使用PuTTY SSH的最后一台服务器,但是我将SSH连接到另一台服务器,然后尝试使用plink来实现它,但是plink仍默认为inthom.com (用-v arg验证为plink)。所以我对plink如何获得这个服务器价值感到茫然。
对于“有趣”,我尝试使用TortoiseHg,只能在使用ssh://!/Repos/test
作为源时克隆回购。
现在,你可以看到,由于plink没有正确解析主机名,我必须在mercurial.ini文件中指定端口号和用户名,而不是像username@inthom.com这样的主机名:## ##就像你期望的那样。试图弄清楚这一点,这让我疯了,因为我会得到无法接触到主机的错误,我知道不应该这样。
我的问题是如何配置我的设置以便正确解析ssh://username@inthom.com:#### / Repos / test作为用户名,主机名,端口号和要复制的仓库?我正在使用的plink版本有问题,还是有些设置我可能搞砸了?如果是plink的错,我可以使用替代工具吗?
我打算让我的朋友设置连接到同一个repo,所以我想要一个干净的解决方案,而不是这个!
业务。特别是当我不知道plink如何获得这个默认服务器时,所以我不确定他是否能够正确地访问inthom.com。
PS。我不得不使用大量不同的教程来进入这个阶段。因此,我还没有尝试过对服务器进行任何更改。希望我能解决这个问题然后我可以尝试将更改推送到回购。
答案 0 :(得分:4)
我知道我迟到但现在更好了。 好的,所以......用于连接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”
您有两种选择:
您可以将此“KyleKey.ppk”文件移动到名称中没有空格的路径中。例如,您可以在“C:\”或“D:\ Path \ Without \ Space \ In \ Name”中移动此文件。
您可以使用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将挂起。
此外,在将Tlink与TortoiseHg或其他一些GUI工具(如MercurialEclipse)结合使用之前,必须先将此服务器添加到服务器列表中。如果你没有这样做,Plink将会等待你的回复,因为你使用的是TortoiseHg而不是命令行。有关AccessingSshRepositoriesFromWindows中此子图的更多信息。
答案 1 :(得分:1)
使用plink,您不需要使用ssh://协议标识符。您可以简单地使用{user} @ {host}:{path}格式,它可以正常工作。
示例:
plink -ssh -C -l {username} -pw {pass} -P 22 -i“C:/ Program Files / PuTTY / Key Files / KyleKey.ppk”inthom.com:/Repos/test
将{username}替换为用户,将{pass}替换为密码。
答案 2 :(得分:1)