2010-08-07 10 views
82

uso github y he agregado y sincronizado archivos con éxito en mi computadora portátil en el pasado.github: No hay métodos de autenticación compatibles disponibles

como de reciente empecé a recibir "masilla Fatal Error: Desconectado: métodos de autenticación no se admite disponibles" después de ejecutar:

git principal origen de arrastre (o empuje)

embargo

ssh [email protected] devuelve la respuesta correcta: ERROR: Hola nombre de usuario! Se ha autenticado con éxito, pero GitHub no proporciona acceso de shell La conexión a github.com está cerrada.

después de cavar alrededor en github encontré este morcel:

métodos de autenticación no se admite disponibles Usted debe ser consciente de la GIT_SSH variable de entorno, que es utilizado por Git a encontrar su cliente de habla ssh, si ssh no funciona para ti. La instalación de git puede estar utilizando plink.exe (a través de GIT_SSH) para realizar la autenticación. Si es así, asegúrese de ejecutar pageant.exe y la clave que creó para github cargada en ella. 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 hace que me pregunte cuál es la mejor solución aquí .. ciertamente no quiero complicar demasiado mi configuración si no es necesaria.

+2

En base a esta pregunta solo, yo era capaz de superar el error. Empecé el concurso y cargué mi llave. Gracias por ser tan minucioso en los detalles. – mOrloff

Respuesta

84

puede crear un archivo llamado ".profile" en su directorio personal, para mí eso es C: \ Users \ [usuario]

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 la línea de comando de Git Bash.

Editar: Este es mi .profile. Le pedirá su contraseña la primera vez que inicie el comando del comando 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 
+7

+1 No he tenido más que problemas al usar Putty/Pageant para las necesidades de ssh de git. Usar el cliente ssh incorporado 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

+12

Para mí solo es GIT_SSH = "/ bin/ssh.exe" (en Windows). ¡Gracias! –

+0

No funciona, aún da error fatal de masilla que no hay métodos de autenticación admitidos disponibles. – Justin

8

que experimentó este problema porque mi GIT_SSH estaba apuntando a la versión de TortoiseSVN Plink.exe. Lo cambié para apuntar a la versión de TortoiseGit, reinicié el cmd y funcionó.

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

Vuelva a verificar su GIT_SSH env var.

Yo prefiero usar Git con normalidad cmd.exe (en Console2 por supuesto)

+0

Recuerdas correctamente; Tuve el mismo problema, con GIT_SSH apuntando a la versión TortoiseSVN de 32 bits de TortoisePlink.exe. Moviéndolo a la versión de TortoiseGit funcionó. – nitwit

2

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

4

Mi problema era que estaba tratando de usar mi nombre de usuario github. Aparentemente cuando se usa Github (¿o es algo de Git?), si usa la autenticación basada en claves, debe establecer su nombre de usuario en git.

No estoy seguro de por qué incluso necesitas un nombre de usuario, tal vez alguien más conocedor puede explicar eso?

+0

Al clonar un repositorio privado, sería una URL como [email protected]: username/Repository.git. Tampoco estoy del todo seguro sobre la ciencia detrás de esto, pero parece que _git_ es un nombre de usuario genérico para cada cuenta de Github – Winter

+1

PLink/Pageant funciona bien. Este es el problema real, y usar algo como 'ssh: // git @ github.com/myname/repo.git' funcionará 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 entrar en el sistema de esa manera. Deben tener una clave válida para incluso hablar con Github, y una vez que tengan una clave válida, pueden hacerla coincidir con el usuario para iniciar sesión. – ChokesMcGee

+0

Sí, esto resolvió mi problema con el uso de Plink/Pageant. – ppumkin

1

Me encontré con 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 mencionó @BlueRaja - Danny Pflughoeft, pero pensé que podría usar alguna dirección;)

Básicamente, solo necesita editar ~/.ssh/config y asegurarse de que el nombre de usuario sea git. También se puede decir que para utilizar una clave SSH específica para Github - Mi archivo ~/.ssh/config tiene el siguiente:

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

tengo la llave específica para Github debido al gran número de otras cosas que hago a través de mi día, pero si solo tiene uno, generalmente será ~/.ssh/id_rsa.pub como Github explains here.

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

10

"... not sure what plink.exe or peagant.exe is ..."

que lo preguntas: plink & certamen son parte del conjunto de la masilla, que es una implementación de SSH que soporte Linux & Windows y es completamente dominante en Windows.

SSH

Secure Shell (SSH) is a cryptographic network protocol for securing data communication. It establishes a secure channel over an insecure network in a client-server architecture, connecting an SSH client application with an SSH server. Common applications include remote command-line login, remote command execution, but any network service can be secured with SSH.

si alguna vez usó Telnet, que es así (pero más seguro): permite el acceso remoto a la cáscara del golpe (línea de comandos) de un host Linux.

PuTTY

PuTTY is a free and open-source terminal emulator, serial console and network file transfer application. It supports several network protocols, including SCP, SSH, Telnet, rlogin ...

En Windows Es el software dominante para el acceso remoto 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 & pageant.exe probablemente don't apply if you're in Linux.PuTTY incluye

Plink: a command-line interface to the PuTTY back ends

Pageant: an SSH authentication agent for PuTTY, PSCP and Plink

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

When the public key is present on the remote end and the matching private key is present on the local end, typing in the password is no longer required ... for additional security the private key itself can be locked with a passphrase.

Así GitHub está alojado en una máquina Linux y utiliza SSH para asegurar la conexión. SSH se autentica con contraseñas o claves, muchos hosts (github?) Solo se autentican con claves. La configuración aparentemente intenta autenticarse con una clave. Las claves y los hosts no son uno a uno: puede tener dos claves para el mismo host y/o dos hosts para la misma clave, por lo que deben administrarse. Si se encuentra en Windows, probablemente se acceda a su sesión de SSH a través de plink y sus claves probablemente las administre el concurso.

Importe la clave que necesita cada vez que carga el concurso. Si siguió las guías que dicen "importar su clave", y vio que funcionó, pero no funciona ahora, consulte Chapter 9: Using Pageant for authentication.

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

1

Recibí este error cuando uso 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.

12

Usando TortoiseGit

Conjunto TortoiseGit> Configuración> Red> Cliente SSH a C:\Program Files (x86)\Git\bin\ssh.exe o C:\Program Files\Git\usr\bin\ssh.exe

tortoisegit

+1

gracias. esto funcionó. Nota: puede que tenga que buscar exactamente dónde vive 'ssh.exe' en una máquina determinada. para mí fue C: \ Program Files \ Git \ usr \ bin \ ssh.exe (probablemente en una máquina obsoleta) – pestophagous

+1

@pestophagous, en mi última instalación de git, veo la misma ruta que tú. Actualizaré la captura de pantalla –

2

Si está utilizando el desfile y está recibiendo el error descrito en la pregunta después de reiniciar el PC (o cierre y reapertura del concurso):

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

Para cargar la clave:

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

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

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

  1. encontrar el acceso directo utilizado por Windows para ejecutar el concurso 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 del archivo de clave SSH al campo "Destino".

de referencia y los detalles: http://blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html

3

Para usuarios TortoiseGit en Windows

Originalmente, utilizados para configurar la mayoría de mis repositorios de GitHub/Bitbucket utilizando los URLs de repositorio SSH como (originalmente) Solía ​​ser la única forma conveniente de evitar que TortoiseGit solicite su contraseña en cada acción.

Pero configurar TortoiseGit de esta manera siempre fue doloroso. Cada vez me llevó horas configurar 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 gestión de contraseñas para HTTPS, y Github actually recommends using HTTPS URLs siempre que sea posible.

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

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

Los beneficios de HTTPS son:

  • Sin gestión o de generación de claves SSH
  • hay necesidad de tener pageant.exe en constante funcionamiento (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
+0

¡Esto lo solucionó! Gracias. –

0

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

where ssh 
0

Tengo este problema (ssh directa funcionó, pero git pull no) debido a mi git remoto no es lo que yo pensaba que era.

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

Uso git remote -v

Cuestiones relacionadas