2010-10-02 56 views
36

No puedo ver para envolver mi cabeza creando una clave ssh para GitHub. Hace bastante tiempo que funcionó pero no puedo entender qué ha cambiado. Desde entonces, eliminé las claves SSH anteriores de mi cuenta de GitHub. Después de seguir las instrucciones varias veces para generar una clave SSH (http://help.github.com/mac-key-setup) y probar "ssh [email protected]" obtengo lo siguiente;Qué hacer con "Falló la solicitud de asignación de PTY en el canal 0"

PTY allocation request failed on channel 0 ERROR: Hi...successfully authenticated...GitHub does not provide shell access...Connection to github.com closed.

me revisaron la troubleshooting guide y se dio cuenta de que mi directorio ssh no tenía un archivo de configuración. Después de crearlo, no estoy seguro de qué o cómo ingresar la ruta local en la línea IdentityFile. Ni siquiera estoy seguro de si esto es necesario en mi caso?

If your github authentication information is different from your machine account information, you’ll need to modify your ssh configuration file.

Create or open the file at ~/.ssh/config Add the following lines:

Host github.com 
    User git 
    Hostname github.com 
    PreferredAuthentications publickey 
    IdentityFile [local path to private key half of github public key you provided] 

You may also need to update the permissions on your .ssh folder and its contents. The SSH application will ignore secret files that are too permissive.

$ chmod 700 ~/.ssh 
$ chmod 600 ~/.ssh/* 

También corrió ssh -v [email protected] los resultados de los cuales se pueden ver aquí http://gist.github.com/607283 nada diferente de lo que puedo decir.

¿Alguna idea de lo que estoy haciendo mal?

+23

La advertencia de "solicitud de asignación de PTY fallida" es inocuo cuando se utiliza la línea de comandos * ssh * para iniciar sesión en un servicio que no proporciona acceso interactivo normal. Git-over-SSH no necesita un tty y el servicio SSH de GitHub está configurado para negarse a asignar uno para las conexiones entrantes. Puedes decirle a * ssh * que no pida un tty con 'ssh -T git @ github.com'. Como dice el siguiente mensaje, su autenticación funciona bien. ¿Tiene algún problema al usar Git para acceder a GitHub en lugar de SSH? –

+0

Gracias Chris: la mejor explicación que he escuchado hasta ahora. Entiendo la primera parte de tu comentario. Supongo que el problema relacionado es que cuando intento crear un nuevo repositorio y "git push origin master" devuelvo el siguiente mensaje: "Error: Permiso para [email protected]/myapp denied to myusername. Fatal: el extremo remoto colgó inesperadamente. "Así que no estoy seguro de en qué parte del proceso estoy fallando ... pensé que era mi clave ssh. ¿Debería continuar probando el ssh -T [email protected] como sugirió? – Shawn

+0

Vemos el mensaje "autenticado correctamente", por lo que no es necesario continuar intentando directamente * ssh * en GitHub. Mencioné la opción '-T' para demostrar que el mensaje de" asignación de PTY "no indica una falla grave (se obtiene el mismo mensaje de" autenticación exitosa "ya sea que ejecute con' -T' o no). Escribiré más sobre el problema real en una respuesta. –

Respuesta

34

Como se describió en los comentarios sobre la pregunta, la "solicitud de asignación PTY fallida" es una amenaza para la autenticación GitHub (es el resultado de tratar de iniciar sesión interactivamente a GitHub cuando el único servicio SSH que ofrecen es no -interactivo Git-over-SSH; la autenticación está funcionando, simplemente no proporcionan un servicio interactivo "shell").


La persona que hizo la pregunta escribió esto en un comentario:

I guess the related problem is that when I try to create a new repository and "git push origin master" I return the following "Error: Permission to [email protected]/myapp denied to myusername. Fatal: the remote end hung up unexpectedly"

Esto parece más probable que sea el problema real. Esto parece indicar que el control remoto llamado origin no está configurado para apuntar correctamente a un repositorio de GitHub.

Compruebe la salida de git remote show -n origin. Probablemente la "URL de búsqueda" y la "URL de inserción" sean las mismas. Ambos deberían tener este aspecto:

[email protected]:git-user-name/repository-name 

Al iniciar sesión en GitHub en la web puede utilizar su nombre de usuario o dirección de correo electrónico asociada de su cuenta. Cuando ingresa a repositorios (o busca de repositorios privados), debe usar su nombre de usuario real (una dirección de correo electrónico no funcionará). Parece que estás usando tu dirección de correo electrónico allí en lugar de solo tu nombre de usuario GitHub. Para solucionar este problema, vuelva a configurar la dirección URL del mando a distancia:

git remote set-url origin [email protected]:github-username/repository-name 

Su nombre aparece en muchos lugares en las páginas web de GitHub una vez que se registran en el lugar más fácil de encontrar es entre su gravatar y el enlace de “tablero de instrumentos”. en el encabezado de la página (verá un ícono de silueta si no tiene un gravatar configurado). Esa misma ubicación se vincula a su página de perfil público; la URL de esta página también debe terminar en su nombre de usuario.

+0

@ chris-johnsen Cuando estoy en el directorio correcto, escribí "git remote set -url origen ... "como se indicó pero el resultado es" error: subcomando desconocido: set-url "y proporciona comandos alternativos para git remoto, ninguno de los cuales parece estar relacionado. ¿Es posible que en lugar de eso necesite usar "git config --global user.name myusername y git config --global user.email [email protected]"? – Shawn

+0

@Shawn: Ah, 'git remote set-url' solo está en Git 1.7.0 y superior. Simplemente haz 'git config remote.origin.url '[email protected]: github-username/repository-name'' o edita la configuración con' git config -e' (1.6.3 y superior; o simplemente 'vim .git/config' ☺). Los valores 'user.name' y' user.email' solo se utilizan al realizar confirmaciones, no al pulsar. –

+0

@ chris-johnsen Gracias por su ayuda y paciencia. Los antecedentes que brindó me ayudaron a aclarar la pregunta que no pude comunicar. Esto es lo que comprendí y resolví ... 1) eliminé el repositorio original, 2.) actualicé a la última versión de Git, 3.) Paralelamente a sus comentarios, la guía RailsTutorial.org, la creación del Repositorio Pro Git y GitHub las instrucciones me di cuenta de que había estado ingresando el nombre de usuario equivocado cuando hice git config --global user.name "my username" y 4.) ¡Finalmente pude presionar a GitHub! ¡De nuevo, gracias por tu ayuda! – Shawn

Cuestiones relacionadas