idea - Push/pull a Github está roto en Android Studio e IntelliJ
intellij idea git fetch (2)
IntelliJ encontró un problema con el github push, pull
del February 23, 2018
. La razón es que el criptográfico débil de Built-in SSH
en IntelliJ ya no es compatible con github.
La solución es simple, sin actualizar IntelliJ.
[IntelliJ - File - Settings - Version Controll - Git]
You can change ''SSH executable'' from ''Build-in'' to ''Native''.
Dado que ''Native'' usa git.exe, no hay problema porque la mayoría de los clientes git ya tienen el último cifrado aplicado. Si está utilizando un antiguo cliente git, por favor actualice!
ps) IntelliJ, PhpStorm y Android Studio tienen el mismo problema y pueden resolverse de la misma manera.
De fondo) la respuesta de Sean Barbeau.
Tengo SSH configurado para autenticarme con Github desde Android Studio (3.0.1 - Compilación # AI-171.4443003) e IntelliJ (2017.3.4 - Compilación 173.4548.28) y todo funcionó bien hasta ayer (22 de febrero de 2018) .
De repente, hoy (23 de febrero de 2018), cuando intenté empujar o jalar algo de Github en IntelliJ o Android Studio, falla y recibo este mensaje en la "Consola de control de versiones":
16:41:14.159: [onebusaway-android] git -c core.quotepath=false pull --progress --no-stat -v --progress upstream master
java.io.IOException: There was a problem while connecting to github.com:22
at com.trilead.ssh2.Connection.connect(Connection.java:791)
at com.trilead.ssh2.Connection.connect(Connection.java:577)
at org.jetbrains.git4idea.ssh.SSHMain.start(SSHMain.java:172)
at org.jetbrains.git4idea.ssh.SSHMain.main(SSHMain.java:138)
Caused by: java.io.IOException: Key exchange was not finished, connection is closed.
at com.trilead.ssh2.transport.KexManager.getOrWaitForConnectionInfo(KexManager.java:92)
at com.trilead.ssh2.transport.TransportManager.getConnectionInfo(TransportManager.java:230)
at com.trilead.ssh2.Connection.connect(Connection.java:743)
... 3 more
Caused by: java.io.IOException: Cannot negotiate, proposals do not match.
at com.trilead.ssh2.transport.KexManager.handleMessage(KexManager.java:413)
at com.trilead.ssh2.transport.TransportManager.receiveLoop(TransportManager.java:754)
at com.trilead.ssh2.transport.TransportManager$1.run(TransportManager.java:469)
at java.lang.Thread.run(Thread.java:745)
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Esto sucedió al mismo tiempo en dos máquinas diferentes, una con Windows 7 Enterprise y la otra con Windows 10.
¿Por qué de repente esto dejó de funcionar y cómo puedo solucionarlo?
Solución:
Para IntelliJ: actualización a IntelliJ 2018.1 o 2017.3.5 (173.4674.1).
Para Android Studio: actualice a Android Studio 3.1 vea este comentario sobre el rastreador de problemas .
Fondo:
Github activó esto el 23 de febrero de 2018 al eliminar permanentemente el soporte para estándares criptográficos débiles:
https://github.com/blog/2507-weak-cryptographic-standards-removed
Sin embargo, IntelliJ y Android Studio todavía tienen problemas con algunos handshakes de SSH que usan cifrados de seguridad sólidos:
- Problema de IntelliJ: https://youtrack.jetbrains.com/issue/IDEA-140196
- Problema de Android Studio: https://issuetracker.google.com/issues/73804233
Este problema subyacente se ha solucionado en IntelliJ 2018.1: https://youtrack.jetbrains.com/issue/IDEA-140196#comment=27-2717976
... así como 2017.3.5 (173.4674.1).
Para Android Studio, la solución está disponible en Studio 3.1, vea este comentario sobre el rastreador de problemas .
Como @Been Kyung Yoon menciona en su respuesta como solución alternativa, puede cambiar el ejecutable de SSH a "Nativo", pero como se mencionó en la nota del problema de IntelliJ:
Cambiar a Native funcionará, pero si sus claves están protegidas con frase de contraseña, primero deberá cargarlas en ssh-agent