eclipse - 在 Eclipse 中将 putty 的页面与 egit 一起使用

标签 eclipse putty egit jsch

我正在尝试通过 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/

相关文章:

java - 完成新手问题,textview句柄无法识别

Java/Eclipse 如何获取项目中类型方法的用法?

java - Maven-无法解决依赖关系

java - Xming:为什么JFrame在setUndecorated(true)时失去焦点?

git - 使用 EGit merge 会导致 merge 完成的所有更改的提交

windows - Egit - 获取、 merge 、 pull 麻烦

eclipse - 为什么我收到 "Plugin execution not covered by lifecycle configuration with GWT"错误?

java - 尝试运行 jar 文件时获取 "No X11 DISPLAY variable was set"

docker - 通过 putty 连接到 play-with-docker 实例

eclipse - Egit的Team上下文菜单只有一个选项: Apply patch