我正在尝试通过 Eclipse 'egit' 模块访问私有(private)远程 SSH git 存储库。我在 Windows 上运行 Eclipse。 Eclipse 似乎无法自动使用 putty 的 pagent 进行授权转发,而且我找不到任何有关自定义 egit 使用的 SSH 的文档(例如,使用 plink.exe)。
我在网上找到了有关设置其他 Windows git 客户端以使用 putty/plink(例如,用于 msysgit)的文档,但我似乎找不到任何关于 Eclipse 的 egit 和 putty(或 eclipse)的信息。
我确信 ssh key 可以正常工作,因为我一直使用它来使用 Putty 登录服务器。
具体来说,我使用Git Repository Viewer,点击“Clone Remote Repository”,填写主机、存储库路径、协议(protocol)(ssh)和用户。我单击“下一步”。我可以说它正在连接,因为我收到了一个带有服务器独特横幅的弹出窗口。然后我得到一个
Transport Error: Cannot list the available branches: Reason: <URI>: Auth fail
ssh 登录只能通过 sshkey 进行,所以这就是为什么这不起作用(但至少它表明我已经掌握了基础知识)。有人在 egit+pageant 上取得成功吗?或者知道它是否不可能?
更新
似乎这不起作用,因为 Eclipse 在内部使用了纯 Java SSH (jsch) 实现,并且 Eclipse 包含的实现不(尚)支持授权代理协议(protocol)。
已经提出了一些通过 支持平台 ssh 代理的补丁(感谢@Janning 提供的链接)。请参阅此 Eclipse bug 179924 .更新 #24 包含有关提议的补丁的令人鼓舞的说明:
I have confirmed that I can get accesses to http://github.com/ and clone some projects by egit with putty's pageant.
我不完全确定,但目前的挂断似乎是围绕纯 java unix-domain 套接字库的一些许可问题,以及升级 Eclipse 使用的纯 java SSH 实现。
最近的一个错误(number 360663)显示所需的 jsch 版本已提交给 Eclipse(据我所知,它应该是下一个版本的一部分——应该是 2012 年 6 月结束)。
最佳答案
找到了一个更好的解决方案,允许使用 pagent 键而不是 eclipse(openssh) 键。
对于我或其他人,请尝试在 Windows 上使用 Eclipse、GitBash、plink 和 pagent(带或不带 keepass)。
根本原因是,错误信息是谎言。可能是由于参数无效和与服务器 key 无关,导致调用 plink.exe 失败。 (JGIT 开发人员应该修复)。
EGIT 使用 JGit,并将参数传递给 "-p [端口] [服务器] "git-upload-pack '[项目]'" plink.exe。
该论点适用于 打开sh ,但是,它与 不兼容plink.exe
, plink.exe 需要大写 “-P”对于 ssh 端口。
将此文件另存为“plink.cmd”
@ECHO OFF
SET c="plink.exe" -ssh -agent -l [username]
:loop
if NOT _%1_ == __ (
IF _%1_ == _-p_ (
SET c=%C% -P
) else (
SET c=%C% %1
)
shift
goto loop
)
%c%
在 Windows 中,运行 SETX GIT_SSH PATH_TO\plink.cmd 上传环境变量。
享受 pagent 与 Eclipse 和 GIT Bash for windows 的连接。
关于eclipse - 在 Eclipse 中将 putty 的页面与 egit 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7762139/