Intellij没有要求Git凭据,但在身份验证过程中失败。
Intellij没有要求Git凭据,但在身份验证过程中失败。
我在Windows 10环境下使用Intellij和Git。由于某种原因,我的Git凭据出现了问题。当我尝试fetch/clone时,Intellij没有要求我输入凭据。看起来它似乎正在尝试使用已存储的Git凭据。当我尝试fetch时,我遇到以下错误:
7:58:31.180: git -c core.quotepath=false fetch origin --progress --prune
java.io.IOException: 身份验证失败: at
org.jetbrains.git4idea.ssh.SSHMain.authenticate(SSHMain.java:298) at
org.jetbrains.git4idea.ssh.SSHMain.start(SSHMain.java:172) at
org.jetbrains.git4idea.ssh.SSHMain.main(SSHMain.java:137) Caused by:
java.io.IOException: 公钥身份验证失败。 at
com.trilead.ssh2.auth.AuthenticationManager.authenticatePublicKey(AuthenticationManager.java:262)
at
com.trilead.ssh2.Connection.authenticateWithPublicKey(Connection.java:443)
at org.jetbrains.git4idea.ssh.SSHMain.tryPublicKey(SSHMain.java:352)
at org.jetbrains.git4idea.ssh.SSHMain.authenticate(SSHMain.java:231)
... 2 more Caused by: java.io.IOException: 无效的PEM结构,缺少'-----BEGIN...' at
com.trilead.ssh2.crypto.PEMDecoder.parsePEM(PEMDecoder.java:138) at
com.trilead.ssh2.crypto.PEMDecoder.decode(PEMDecoder.java:313) at
com.trilead.ssh2.auth.AuthenticationManager.authenticatePublicKey(AuthenticationManager.java:171)
... 5 more fatal: 无法从远程存储库读取。请确保您具有正确的访问权限并且存储库存在。
所以,我搜索了一下,找到了各种方法,并尝试了所有方法,但都没有起作用。我尝试了以下几种方式:
1)删除Windows凭据管理器中存储的凭据
2)在Intellij IDEA 14上更改远程存储库凭据(身份验证)
等等...还有其他方法来解决这个问题吗?这样Intellij在我fetch/clone仓库之前会询问我凭据吗?
问题出现的原因是使用了错误的ssh-key或不支持的密钥格式。IntelliJ内置的SSH客户端不支持新的OpenSSH密钥格式。解决方法是配置IDE使用本机SSH,即告诉git使用系统默认的SSH客户端或者GitForWindows中捆绑的客户端,本机SSH应该支持使用的密钥格式。在2018.3之前的版本中,IntelliJ不能处理需要交互提示的密码或主机验证,所以必须使用ssh-agent。从2018.3开始,IntelliJ可以处理这些提示,并且本机SSH是默认的。所以更新到最新版本应该解决这个问题,除非是密钥格式或一些特定的.ssh配置不被内置SSH客户端支持。如果配置本机SSH后仍然遇到其他问题,可以将git版本降级到2.17.0来解决问题。