github: no hay métodos de autenticación compatibles disponibles

98

uso github y he agregado y sincronizado archivos en mi computadora portátil con éxito en el pasado.

Recientemente comencé a recibir " PuTTY Fatal Error: Disconnected: No hay métodos de autenticación compatibles disponibles " después de ejecutar:

git pull origin master (o empujar)

sin embargo

ssh [email protected] devuelve la respuesta correcta: ERROR: ¡Hola, nombre de usuario! Se ha autenticado correctamente, pero GitHub no proporciona acceso de shell. Conexión a github.com cerrada.

después de buscar en github, encontré este morcel:

No hay métodos de autenticación compatibles disponibles . Debe tener en cuenta la variable de entorno GIT_SSH, que git utiliza para encontrar su cliente que habla ssh, si ssh no funciona para usted. La instalación de git puede estar usando plink.exe (a través de GIT_SSH) para realizar la autenticación. Si es así, asegúrese de tener pageant.exe ejecutándose y de tener cargada la clave que creó para github. Esto proporciona la clave para plink.exe; sin él, se producirá el error anterior.

no estoy seguro de qué es plink.exe o peagant.exe ... y el hecho de que ssh [email protected] parece autenticarse correctamente me hace preguntarme cuál es la mejor solución aquí ... Ciertamente no quiero complicar demasiado mi configuración si no necesario.

Sonic Soul
fuente

Respuestas:

101

Puede crear un archivo llamado ".profile" en su directorio de inicio, para mí eso es C: \ Users \ [user]

Dentro de ese archivo, ponga la siguiente línea de código:

GIT_SSH="/usr/bin/ssh.exe"

Esto configurará la variable de entorno GIT_SSH para usar el cliente ssh incluido con git.

El script .profile se ejecuta cuando inicia su línea de comando de Git Bash.

Editar: Este es mi .profile. Le pedirá su contraseña la primera vez que inicie el símbolo del sistema de git, luego la recordará a partir de ese momento, hasta que reinicie su computadora. Muy útil para que no tenga que seguir ingresando su contraseña cada vez que quiera hacer algo.

SSH_ENV="$HOME/.ssh/environment"
GIT_SSH="/usr/bin/ssh.exe"

function start_agent {
echo "Initializing new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cygwin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
Rex Morgan
fuente
8
+1 No he tenido más que problemas al usar Putty / Pageant para las necesidades de ssh de git. El uso del cliente ssh integrado funciona de maravilla. Esto explica por qué ssh [email protected] devuelve bien si lo ejecuta usted mismo, pero dejar que git use las herramientas configuradas (Putty / Pageant) no lo hace.
enriquein
14
Para mí, eso es solo GIT_SSH = "/ bin / ssh.exe" (en Windows). ¡Gracias!
Martin Konicek
1
@Justin, ¿estás usando el indicador mingw32?
Rex Morgan
2
Usando cygwin en Windows 7, la respuesta anterior funcionó, pero necesitaba GIT_SSHhacerlo .bash_profiley no.profile
Gabe
2
En mi caso con Windows 10 usando Git Bash esGIT_SSH="D:\Program Files\Git\usr\bin\ssh.exe"
PaulH
31

Usando TortoiseGit

TortoiseGit> Configuración ... Red ... Cliente SSH: C:\Program Files\Git\usr\bin\ssh.exe

La ubicación puede variar. En una computadora estaba enC:\Program Files (x86)\Git\bin\ssh.exe

tortuga

Joseph Dykstra
fuente
5
Gracias. esto funcionó. nota: es posible que tenga que buscar exactamente dónde vive 'ssh.exe' en una máquina determinada. para mí fue C: \ Archivos de programa \ Git \ usr \ bin \ ssh.exe (probablemente en una máquina desactualizada)
pestophagous
10

"... no estoy seguro de qué es plink.exe o peagant.exe ..."

Ya que preguntas: plink & pageant son parte de la suite PuTTY, que es una implementación de SSH que es compatible con Linux y Windows y es completamente dominante en Windows.

SSH

Secure Shell (SSH) es un protocolo de red criptográfico para proteger la comunicación de datos. Establece un canal seguro a través de una red insegura en una arquitectura cliente-servidor, conectando una aplicación cliente SSH con un servidor SSH. Las aplicaciones comunes incluyen el inicio de sesión remoto desde la línea de comandos, la ejecución remota de comandos, pero cualquier servicio de red se puede proteger con SSH.

si alguna vez usó Telnet, es así (pero más seguro): le permite acceder de forma remota al shell bash (línea de comando) de un host Linux.

Masilla

PuTTY es un emulador de terminal gratuito y de código abierto, una consola en serie y una aplicación de transferencia de archivos de red. Soporta varios protocolos de red, incluidos SCP, SSH, Telnet, rlogin ...

En Windows, es el software dominante para acceder de forma remota a la línea de comandos de un host Linux bajo el protocolo SSH (arriba). En Windows, las extensiones .exe son para ejecutables. Entonces, esas notas sobre plink.exe y pageant.exe probablemente no se apliquen si está en Linux . PuTTY incluye

Plink : una interfaz de línea de comandos para los back-end de PuTTY

Pageant : un agente de autenticación SSH para PuTTY, PSCP y Plink

De ( http://en.wikipedia.org/wiki/Secure_Shell#Key_management )

Cuando la clave pública está presente en el extremo remoto y la clave privada coincidente está presente en el extremo local, ya no es necesario escribir la contraseña ... para mayor seguridad, la clave privada en sí puede bloquearse con una frase de contraseña.

Entonces, github está alojado en una máquina Linux y usa SSH para asegurar la conexión. SSH se autentica con contraseñas o claves, muchos hosts (¿github?) Solo se autentican con claves. Aparentemente, la configuración está tratando de autenticarse con una clave. Las claves y los hosts no son uno por uno: puede tener dos claves para el mismo host y / o dos hosts para la misma clave, por lo que deben administrarse. Si está en Windows, entonces probablemente se accede a su sesión SSH a través de plink y sus claves probablemente sean administradas por Pageant.

Importe la clave que necesita cada vez que cargue Pageant. Si siguió las guías que decían "importe su clave" y vio que funcionaba, pero no funciona ahora, consulte el Capítulo 9: Uso de Pageant para la autenticación .

Un último consejo si está en Windows: puede tener varias instancias de la suite PuTTY instaladas por varias herramientas. TortoiseGit, por ejemplo, instala el suyo propio.

Woodvi
fuente
8

Experimenté este problema porque GIT_SSHestaba apuntando a la versión TortoiseSVN de Plink.exe. Lo cambié para que apunte a la versión de TortoiseGit, reinicié cmd y funcionó.

No puedo recordar exactamente, pero la versión de TortoiseSVN podría haber sido la versión de 32 bits y la versión de TortoiseGit era de 64 bits (ubicada en Program Files, no Program Files (x86)).

Vuelva a verificar su GIT_SSHenv var.

Prefiero usar git con normal cmd.exe(en Console2 por supuesto)

vaughan
fuente
Recuerda correctamente; Tuve el mismo problema, con GIT_SSH apuntando a la versión TortoiseSVN de 32 bits de TortoisePlink.exe. Moverlo a la versión de TortoiseGit funcionó.
idiota
6

Para usuarios de TortoiseGit en Windows

Originalmente, solía configurar la mayoría de mis repositorios de Github / Bitbucket utilizando las URL del repositorio SSH, ya que (originalmente) solía ser la única forma conveniente de evitar que TortoiseGit solicitara su contraseña en cada acción.

Pero configurar TortoiseGit de esta manera siempre fue tremendamente doloroso. Cada vez me tomó horas configurarlo correctamente, ya que las opciones de instalación predeterminadas nunca parecían funcionar (incluso a partir de 2016, ¡sheesh!).

Pero TortoiseGit ahora tiene una mejor administración de contraseñas para HTTPS, y Github realmente recomienda usar URL HTTPS siempre que sea posible.

URL SSH: [email protected]:User/repo-name.git

URL HTTPS: https://github.com/User/repo-name.git

Los beneficios de HTTPS son:

  • Sin gestión ni generación de claves SSH
  • No es necesario que se pageant.exeejecute constantemente (lo que solicita su contraseña en cada lanzamiento)
  • Usando TortoiseGit de Australia, encuentro que los clones sobre HTTPS son 5-10 veces más rápidos que SSH
Simon East
fuente
+ 'git config --global http.sslVerify false'
Mike
5

Si está utilizando Pageant y recibe el error descrito en la pregunta después de reiniciar su PC (o de cerrar y volver a abrir Pageant):

El error puede deberse a que Pageant no tiene cargada activamente su clave SSH de GitHub. De forma predeterminada, Pageant NO carga automáticamente las claves de la sesión anterior cuando se inicia.

Para cargar la clave:

  1. Abrir concurso. (En Windows, si Pageant se está ejecutando, tendrá un ícono en la bandeja del sistema. Haga doble clic en él).
  2. Haga clic en el botón Agregar clave y proceda a agregar su clave SSH de GitHub existente.

Para evitar este problema en el futuro, puede configurar Pageant para que cargue automáticamente su clave cuando se inicie. (Pageant le pedirá automáticamente una contraseña si su clave está protegida con contraseña).

Pasos para hacer esto (asumiendo que ya tiene Pageant configurado para ejecutarse cuando se inicia Windows):

  1. Busque el acceso directo que usa Windows para ejecutar Pageant cuando se inicia Windows. (Puede estar en la carpeta Inicio, que se puede abrir con Inicio> Ejecutar> shell:startup)
  2. En el cuadro de diálogo Propiedades del acceso directo, agregue la ruta completa y el nombre de archivo del archivo de clave SSH al campo "Destino".

Referencia y detalles completos: http://blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html

Jon Schneider
fuente
4

Mi problema fue que estaba intentando usar mi nombre de usuario de github. Aparentemente, cuando usa Github (¿o es algo de Git?) , Si usa autenticación basada en claves, debe configurar su nombre de usuario en git.

No estoy seguro de por qué necesita un nombre de usuario, tal vez alguien con más conocimientos pueda explicarlo.

BlueRaja - Danny Pflughoeft
fuente
Al clonar un repositorio privado, sería una URL como [email protected]: username / Repository.git. Tampoco estoy completamente seguro de la ciencia detrás de esto, pero parece que git es un nombre de usuario genérico para cada cuenta de Github
Invierno
1
PLink / Pageant funciona bien. Este es el problema real, y usar algo como ssh://[email protected]/myname/repo.gitfuncionará muy bien. Buen trabajo. En cuanto a por qué, supongo que es para bloquear la seguridad. El usuario 'git' tiene su inicio de sesión deshabilitado, por lo que nadie puede ingresar al sistema de esa manera. Deben tener una clave válida para incluso hablar con Github, y una vez que tienen una clave válida, pueden
compararla
2

En mi máquina con Windows 7 que ejecuta Github para Windows usando git versión 1.8.3.msysgit.0. Descubrí que actualizar la variable de entorno de mi sistema GIT_SSH a C: \ Archivos de programa (x86) \ Git \ bin \ ssh.exe parecía funcionar. Esto también solucionó mi problema al contactar con el repositorio git de OpenShift.

atorres757
fuente
2

Me funcionó en Windows 8: la variable GIT_SSH apuntaba a plink.exe, la modificó en la configuración del sistema para apuntar al binario ssh, y eso solucionó el problema. Para averiguar la ruta completa al ssh, ejecute:

where ssh
Dmitriy
fuente
2

Para resolver este problema, esto fue lo que hice.

Estaba usando Git Bash en Windows 10

Comencé Pageant, presioné la tecla Agregar,

ingrese la descripción de la imagen aquí

navegué a la carpeta C: \ Users \ username \ .ssh y elegí mi clave

ingrese la descripción de la imagen aquí

Luego intento hacer un git push y esta vez funcionó.

Lismore
fuente
Recuerde, probablemente tendrá que hacer esto cada vez que reinicie su PC con Windows; puede poner Pageant en su carpeta de inicio como un acceso directo con el argumento de línea de comando correcto para su archivo de clave privada, pero si ha establecido una contraseña en su clave privada cuando la creó, deberá recordar hacer clic con el botón derecho en el icono del concurso en la bandeja de herramientas, seleccionar "Agregar clave" y completarla después de cada reinicio.
webbje
1

Encontré este mismo problema, sin embargo, la solución GIT_SSH pareció funcionar una vez para mí. Después de reiniciar la computadora, me di cuenta de que era otra cosa, ya que pude clonar mis repositorios privados sin problemas usando Git Bash o Command Prompt, pero no en Sublime Text 3 con el complemento SublimeGit. Mi solución fue simple y en realidad es lo que @BlueRaja - Danny Pflughoeft mencionó, pero pensé que podría usar alguna dirección;)

Básicamente, solo necesita editar ~/.ssh/configy asegurarse de que el nombre de usuario sea git. También puede decirle que use una clave SSH específica para Github: mi ~/.ssh/configarchivo se ve así:

Host gh
    Hostname github.com
    User git
    IdentityFile ~/.ssh/github_rsa.pub

Tengo una clave específica para Github debido a la cantidad de otras cosas que hago a lo largo del día, pero si solo tienes una, generalmente será ~/.ssh/id_rsa.pubcomo explica Github aquí. .

Sé que todos tienen una solución diferente, pero dejaré esto aquí para cualquiera que pueda encontrar este artículo sin una solución. ¡Buena suerte!

Invierno
fuente
1

Recibí este error al usar TortoiseGit para clonar un repositorio de GitHub. Se corrigió haciendo clic en "Cargar clave de masilla" y seleccionando un archivo de clave (* .pkk) en el diálogo de clonación de Git.

Zymotik
fuente
0

Tuve este problema (direct ssh funcionó, pero git pull falló) debido a que mi control remoto git no era lo que pensaba.

Sí, sí, sé que es un error estúpido, pero sucede y vale la pena comprobarlo.

Utilizar git remote -v

cowlinator
fuente
0

Tuve un problema similar después de actualizar GitExtensions a la versión 3.3.0.7719

De alguna manera revirtió mi configuración de autenticación para usar PuTTY en lugar de OpenSSH.

En esa versión, aquí está el menú que usé para habilitar OpenSSH nuevamente:

ingrese la descripción de la imagen aquí

wip
fuente