Kyl*_*lle 3 windows ssh mercurial putty plink
我有一台装有 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连接到任何存储库。
我唯一的猜测是它以某种方式默认为我使用 PuTTY SSH 连接到的最后一台服务器,但我通过 SSH 连接到另一台服务器,然后尝试使用 plink 访问它,但 plink 仍然默认为 inthom.com(已通过-v arg 到 plink)。所以我完全不知道 plink 如何获得这个服务器值。
为了“有趣”,我尝试使用 TortoiseHg 并且只能在我ssh://!/Repos/test
用作源时克隆一个 repo 。
现在,你可以看到,由于 plink 没有正确解析主机名,我必须在 mercurial.ini 文件中指定端口号和用户名,而不是像 username@inthom.com:#### 这样的主机名你会期望的。一开始试图弄清楚这一点让我发疯,因为我会收到无法联系到主机的错误,我知道不应该出现这种情况。
我的问题是如何配置我的设置,以便将 ssh://username@inthom.com:####/Repos/test 正确解析为要复制的用户名、主机名、端口号和存储库?我正在使用的 plink 版本有问题,还是我可能搞砸了一些设置?如果是 plink 的错,我可以使用其他工具吗?
我将尝试让我的朋友设置连接到同一个 repo,所以我想要一个干净的解决方案而不是这个!
业务。特别是当我不知道 plink 如何获得这个默认服务器时,所以我不确定他是否能够正确访问 inthom.com。
附注。我什至不得不使用大量不同的教程才能达到这个阶段。因此,我还没有尝试将任何更改推送到服务器。希望我能弄清楚这一点,然后我可以尝试将更改推送到 repo。
我知道我迟到了,但现在比永远都好。好的,所以...用于连接到 Mercurial SSH 的命令
ssh = plink.exe -ssh -C -l 用户名 -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 将挂起。
而且,在将 Plink 与 TortoiseHg 或其他一些 GUI 工具(如 MercurialEclipse)结合使用之前,您必须添加此服务器以了解服务器列表。如果你没有这样做,Plink 将挂起等待你的响应,你不能给出,因为你使用 TortoiseHg 而不是在命令行上。在AccessingSshRepositoriesFromWindows 中有更多关于这个子集的信息。