EGit - SSH连接GitHub时无法输入密码短语

23
我正在使用Eclipse Indigo RC4和EGit(捆绑在一起)。我有一个项目已经提交到我的本地仓库,现在我想从本地仓库推送到我在GitHub上的远程仓库。
使用命令行工具进行推送/拉取可以正常工作(我已配置基于RSA密钥的SSH身份验证)。
但是当我尝试通过EGit(通过指向GitHub的SSH)进行推送时,它会提示我输入我的密码短语。但是当我输入正确的密码短语后,它再次提示我输入相同的密码短语(注意:用户名显示为git,因为这是在使用GitHub时的默认设置。我想这不是问题)。
在Eclipse首选项下,我已经仔细检查确保它配置为使用我生成的RSA令牌。
3个回答

22
通过访问这个链接 http://www.eclipse.org/forums/index.php/t/197428/,我解决了问题。
我创建了一个环境变量GIT_SSH,它指向/usr/bin/ssh(这是我在命令行中使用的SSH实现),然后启动了Eclipse。当存在此环境变量时,Eclipse将使用我的shell的SSH工具进行连接,并且不会提示输入密码,一切正常运行。

1
我在做这件事时遇到了问题,我应该把环境变量放在哪里?请告诉我具体的代码行。 - Seth Hikari
2
@Seth 这取决于你的操作系统 Seth。在我的情况下,我正在使用Ubuntu,所以我修改了/etc/environment(你需要超级用户权限)文件,并将行GIT_SSH="/usr/bin/ssh"添加为最后一行,然后重新启动机器。如果你使用的是Windows,请查看此链接http://support.microsoft.com/kb/310519。无论如何,快速谷歌搜索“如何在_您的操作系统名称_中设置环境变量”即可开始。希望这有所帮助。祝你好运! - Yohan Liyanage
相同的问题,相同的解决方案!非常感谢! - Topera
4
顺便提醒一下,但不要太拘泥于细节,通常情况下不应该编辑 /etc/environment 文件,而应该编辑你的主目录下的 .profile 文件。在其中加入 export GIT_SSH=which ssh 这一行通常适用于大多数平台。 - Nick Campion
谢谢Nick。是的,你说得对。我习惯于编辑/etc/environment,因为我在那里做的更改可以在所有帐户中使用。但是再次说一遍,我的机器上只有一个帐户,我本可以使用.profile代替 :) - Yohan Liyanage

13

这对我解决了问题(Ubuntu 11.04)。为什么他们不会将其回溯到当前稳定版本中?真让人沮丧。 - Stephen Fuhry
@adietisheim 非常感谢!更新JSch包对我也有用!! :) - rmbianchi
在我的Ubuntu 11.04上可以运行。谢谢! - jeje

2
在Eclipse Juno上,Jsch已经是>1.44版本,但对我来说问题仍然存在。我还尝试设置GIT_SSH,但这也没有起作用。我的先前密钥是由ssh-keygen生成的,我只能猜测这不会生成一个合适的密钥。
我成功的做法如下:
- 使用Eclipse生成一个新的DSA密钥 - 创建一个1024位的密钥 Eclipse->Preferences->General->Network Connections->SSH2->Key Management [可能使用RSA也可以,但我没有尝试] - 将生成的公钥复制到远程repo - 点击[Save Private Key]按钮而不输入密码 - 重新启动Eclipse 现在,Eclipse/EGit将与远程Git Repo同步,无需输入密码 - 哎呀!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接