如何在没有PuTTY(Pageant)的命令行中使用TortoiseHg

rad*_*tao 3 mercurial plink tortoisehg ssh-keys pageant

之前我使用过Mercurial命令行安装,对于我来说,它使用默认的ssh客户端和〜/ .ssh中的键位置.

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

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

在此输入图像描述

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

可以使用Pageant(plink)来解决问题:运行它并添加putty键,或者向Mercurial配置文件添加pageant(plink).

但是,我正在寻找如何以旧的方式工作,没有选美或plink,只使用默认的ssh键位置?

rad*_*tao 9

看起来与gitMercurial 相反,它不提供自己的ssh客户端,因此除了两个解决方法之外,使用Plink和Pageant是强制性的:

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

    [UI]

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

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

    [UI]

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

    # 要么

    #ssh ="PATH_TO_ANY_OTHER_SSH_CLIENT_LIKE_CYGWIN"

我尝试了两种方式 - 它们非常出色.

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

备注:

  • 有时,基于解析器,ini文件中的路径解析了字符eascaping,因此\可以转义下一个符号.在这种情况下,路径应该看起来像C:\\ Program Files(x86)\\ Git \\ bin \\ ssh.exe(带双斜线)
  • 我的%PATH%变量中的git\bin目录在ssh没有完整路径指定的情况下使用.在这种情况下,在Mercurial配置中,您可以像这样使用:

    [UI]

    ssh = ssh