之前我使用过Mercurial
命令行安装,对于我来说,使用默认的ssh客户端和〜/ .ssh 中的密钥位置,它运行正常。
在我的新笔记本电脑上安装了TortoiseHg
。现在任何远程请求(如 hg pull 或 hg incoming )都会生成 PuTTY Fatal Error :
已断开连接:没有可用的支持身份验证方法(服务器已发送:publickey)
如果我尝试直接通过ssh访问存储库,那么结果非常相似:
ssh -vT git@bitbucket.org
使用Pageant
(plink
)可以解决问题:运行它并添加putty键,或者添加选美( plink ) Mercurial配置文件。
但是,我正在寻找如何以旧方式工作,没有选美或plink,只使用默认的ssh密钥位置?
答案 0 :(得分:9)
看起来与git
相反Mercurial不提供自己的ssh客户端,因此除了两个解决方法之外,必须使用Plink和Pageant:
Use TortoisePlink as ssh client with explicit key reference in Mercurial config(%USERPROFILE%\。hgrc 或%USERPROFILE%\ Mercurial.ini ):
[UI]
ssh =“C:\ Program Files \ TortoiseHg \ lib \ TortoisePlink.exe”-ssh -i%USERPROFILE%.ssh \ id_rsa.ppk
如果您已安装git
或cygwin
(或在Windows上使用ssh的任何其他方式),则可以在Mercurial配置中使用第三方ssh客户端指向路径:
[UI]
ssh =“C:\ Program Files(x86)\ Git \ bin \ ssh.exe”
#或
#ssh =“PATH_TO_ANY_OTHER_SSH_CLIENT_LIKE_CYGWIN”
我尝试了两种方式 - 它们非常出色。
我使用第二个,因为我在我的PC上使用git
分布式工具作为主ssh
代理。如果您的PC上没有ssh
替代品,则第一个选项是合适的。
备注强>:
ssh
时没有指定完整路径。在这种情况下,在Mercurial配置中,您可以像这样使用:
[UI]
ssh = ssh
答案 1 :(得分:3)
不,没有任何方法可以做到这一点,而无需安装或使用除TortoiseHg之外的某些软件。
Mercurial本身并没有实现SSH。在Unix上,它只运行ssh
并期望已经安装了一个合适的客户端(这是一个安全的选择,因为绝大多数Unix系统预先安装了SSH客户端或者可以相对容易地安装一个)。在Windows上,这不是一个合理的假设,所以TortoiseHg bundles a client:
SSH是对称的对等安全隧道。 SSH客户端和服务器都有自己的密钥管理系统,因此当使用SSH时,Mercurial不会涉及密码提示。这在Windows上存在问题,因此 TortoiseHg将TortoisePlink SSH客户端与其Windows安装程序捆绑在一起。 TortoisePlink是Plink SSH客户端的一个端口,它使用对话框提示进行主机密钥授权和密码提示。 TortoisePlink(由TortoiseSVN项目开发)可以使用属于Plink工具链的其他SSH工具,包括Pageant密钥代理。
如果你不使用TortoisePlink,你很可能没有TortoiseHg能够连接的SSH客户端。如果您不使用Pageant,则没有用于保存密钥的系统; TortoisePlink不使用~/.ssh
,因为这不是Windows的工作方式。
答案 2 :(得分:0)
How do I prevent “No supported authentication methods available” error when using TortoiseHg?
在关闭窗口,保存pubkey,保存PrivKey之前,获取/运行puttygen.exe,单击Generate,(no passphrase)。复制所有关键文本(或者您必须返回到puttygen)并将其粘贴到BitBucket网页上的Account / Profile / Settings / Security / SSHKeys区域。 (右键单击)systray中的pageant.exe图标 - 单击“添加密钥”。 退出选美并重新加载它以确保。退出龟并重新加载它只是为了确保。很高兴。