当存在底层 SSH 身份验证问题时,可能会发生此错误,例如 git 远程服务器上的公钥错误,或者 git 远程服务器更改了其 SSH 主机密钥。
Eclipse 将使用您在 Preferences -> General -> Network Connections -> SSH2 中指定的 .ssh 目录进行 ssh 配置。将其设置为 "{您的默认用户目录}.ssh\" 。
要解决问题,首先您需要确定用于 Git 的 ssh 客户端。这存储在 GIT_SSH 环境变量中。右键单击“计算机”(Windows 7),然后选择属性 -> 高级系统设置 -> 环境变量。
如果 GIT_SSH 包含 plink.exe 的路径,则您正在使用 PuTTY 堆栈。
- 要获取您的公钥,请打开 PuTTYgen.exe,然后加载您的私钥文件 (*.ppk)。列出的公钥应该与 git 远程服务器上的公钥匹配。
- 要获取新的主机密钥,请打开一个新的 PuTTY.exe 会话,然后连接到 git@{git repo host}。
- 单击确定并说是以存储新密钥。
- 收到登录提示后,您可以关闭 PuTTY 窗口。新密钥已存储。
- 重新启动 Eclipse。
如果 GIT_SSH 在“Git for Windows”树中包含“ssh.exe”的路径,则说明您正在使用 Git for Windows 的 OpenSSH。
- 将 %HOME% 设置为您的默认用户目录(如 Eclipse 中所列;见上文)。
- 将 %HOMEDRIVE% 设置为默认用户目录的驱动器号。
- 将 %HOMEPATH% 设置为 %HOMEDRIVE% 上的默认用户目录的路径
- 要获取您的公钥,请在文本编辑器中打开文件 %HOMEDRIVE%%HOMEPATH%/.ssh/id_rsa.pub(或 id_dsa.pub)。列出的公钥应该与 git 远程服务器上的公钥匹配。
- 要获取新的主机密钥,请运行:cmd.exe
- 运行 Git Bash
- Ctrl-C
- 在 bash 提示符下,运行 /c/path/to/git/for/windows/bin/ssh.exe git@{git remote host}。
- 键入 yes 以接受新密钥。
- 出现登录提示后,键入: ctrl-c
- 关闭 cmd.exe 窗口
- 重新启动 Eclipse。
最后,如果您的外部 ssh 客户端仍有问题,请删除 GIT_SSH 环境变量并将 HOME 环境变量设置为 Windows 上的默认用户目录。如果没有 GIT_SSH 变量,EGit 将使用其内部 ssh 客户端 (java)。它将使用您在上面指定的 .ssh 目录作为其 SSH 配置目录。
注意:如果你有 Git for Windows,你可以使用它的工具在你的 .ssh 目录中创建一个 SSH 密钥对:
- 将 %HOME% 设置为您的默认用户目录(如 Eclipse 中所列)。
- 将 %HOMEDRIVE% 设置为默认用户目录的驱动器号。
- 将 %HOMEPATH% 设置为 %HOMEDRIVE% 上的默认用户目录的路径
- 运行 Git Bash
- Ctrl-C
- 运行:ssh-keygen.exe -t rsa -b 2048
- 保存为默认文件名
- 选择一个密码或不保存密码。如果您使用密码进行保存,Eclipse 会在您每次从 git 远程服务器推送或拉取时提示您输入密码。
- 关闭 Git Bash
您还可以使用 Eclipse 的 SSH2 Preference 窗格中的 GUI 来管理主机和密钥。