3

早些时候我使用Mercurial命令行安装,它对我来说很好,默认 ssh 客户端和密钥位置在~/.ssh

在我安装的新笔记本电脑上TortoiseHg。现在任何远程请求(如hg pullhg incoming)都会生成PuTTY 致命错误

断开连接:没有可用的受支持的身份验证方法(服务器发送:publickey)

在此处输入图像描述

如果我尝试直接通过 ssh 访问存储库,则结果非常相似: ssh -vT git@bitbucket.org

Pageant使用( )可以解决问题plink:运行它并添加 putty 密钥,或将选美( plink ) 添加到 Mercurial 配置文件。

但是,我正在寻找如何以旧方式工作,无需选美或 plink,仅使用默认 ssh 密钥位置?

4

3 回答 3

10

看起来与gitMercurial 相反,它不提供自己的 ssh 客户端,因此必须使用 Plink 和 Pageant,但有两种解决方法:

  1. 在 Mercurial 配置(%USERPROFILE%\.hgrc%USERPROFILE%\Mercurial.ini )中使用TortoisePlink作为 ssh 客户端和显式键引用

    [用户界面]

    ssh = "C:\Program Files\TortoiseHg\lib\TortoisePlink.exe" -ssh -i %USERPROFILE%.ssh\id_rsa.ppk

  2. 如果您已安装gitcygwin(或任何其他在 Windows 上使用 ssh 的方式),则可以在 Mercurial 配置中使用第三方 ssh 客户端指向路径:

    [用户界面]

    ssh = "C:\Program Files (x86)\Git\bin\ssh.exe"

    # 或者

    # ssh = "PATH_TO_ANY_OTHER_SSH_CLIENT_LIKE_CYGWIN"

我尝试了两种方式——它们工作得很好。

我使用第二个,因为我git在我的 PC 上使用分布式工具作为主要ssh代理。ssh如果您的 PC 上没有其他选项,则第一个选项是合适的。

备注

  • 有时,基于解析器,ini文件中的路径使用转义字符解析,因此\可能会转义下一个符号。在这种情况下,路径应类似于C:\\Program Files (x86)\\Git\\bin\\ssh.exe(带有双斜杠)
  • 我的 %PATH% 变量中有git\binssh目录,无需指定完整路径即可使用。在这种情况下,在 Mercurial 配置中,您可以像这样使用:

    [用户界面]

    ssh = ssh

于 2015-08-13T08:46:51.417 回答
3

不,如果不安装或使用TortoiseHg 本身以外的其他软件就没有任何方法可以做到这一点。

Mercurial 本身不实现 SSH。在 Unix 上,它只是运行ssh并期望已经安装了一个合适的客户端(这是一个安全的选择,因为绝大多数 Unix 系统要么预装了一个 SSH 客户端,要么可以相对容易地安装一个)。在 Windows 上,这不是一个合理的假设,因此 TortoiseHg捆绑了一个客户端

SSH 是一种对称的对等安全隧道。SSH 客户端和服务器拥有自己的密钥管理系统,因此 Mercurial 在使用 SSH 时不会涉及密码提示。这在 Windows 上是有问题的,因此TortoiseHg 将 TortoisePlink SSH 客户端与其 Windows 安装程序捆绑在一起。TortoisePlink 是 Plink SSH 客户端的一个端口,它使用对话提示来进行主机密钥授权和密码提示。TortoisePlink(由 TortoiseSVN 项目开发)可以使用作为 Plink 工具链一部分的其他 SSH 工具,包括 Pageant 密钥代理。

如果你不使用 TortoisePlink,你很可能没有 TortoiseHg 能够与之交互的 SSH 客户端。如果您不使用 Pageant,则没有保存密钥的系统;TortoisePlink 不使用~/.ssh,因为这不是 Windows 做事的方式。

于 2015-08-12T20:39:29.317 回答
0

使用 TortoiseHg 时如何防止出现“没有可用的支持的身份验证方法”错误?

获取/运行 puttygen.exe ,单击生成,(无密码),然后关闭窗口,保存 pubkey,保存 PrivKey。复制所有密钥文本,(否则您将不得不返回 puttygen)并将其粘贴到 BitBucket 网页上的 Account/Profile/Settings/Security/SSHKeys 区域。(右键单击)系统托盘中的 pageant.exe 图标 - 单击“添加密钥”。退出选美并重新加载它只是为了确保。退出乌龟并重新加载它只是为了确保。很好走。

于 2017-07-16T11:40:18.123 回答