2012-08-30 17 views
85

Disculpe un poco la frustración, que intentaré controlar ya que Heroku está utilizando SO como soporte al cliente (lo que creo que es de mala calidad por decir lo menos).git push heroku master Permiso denegado (clave pública). fatal: el extremo remoto colgó inesperadamente.

Durante las últimas cinco horas he estado tratando de obtener una aplicación para publicar, pero invariablemente algo falla con las teclas. He leído docenas de artículos y he intentado punta a punta en un esfuerzo por descubrir dónde, en el estúpido proceso completamente opaco que Heroku está jodiendo.

Mi caso de uso no es tan difícil: he creado un nuevo par de llaves para mis aplicaciones heroku. Me he puesto que la clave para ser mi clave:

> heroku keys 
    === [email protected] Keys 
    ssh-rsa AAAAB3NzaC...avOqfA7ZBd [email protected] 

puedo entrar y "crear" una aplicación (nombre estúpido, ya que parece ser la creación de un repositorio git, no cualquier tipo de aplicación) sin problema. Pero cada * * volviendo loco tiempo trato de empujar mi aplicación, me sale:

> git push heroku master 
    Permission denied (publickey). 
    fatal: The remote end hung up unexpectedly 

no tengo ni idea de WTF está pasando con ella; Simplemente estoy pegado golpeando mi cabeza contra un teclado sin más recurso que esperar que el dios todopoderoso de Google pueda responderlo. Y Google no lo está respondiendo (bueno, déjame retirar eso, he visto una docena de formas de responder esto).

Para un sistema que se supone que es fácil, esto es una broma. Me gusta la idea de Heroku, pero después de tomar cinco para obtener absolutamente nada hecho, estoy pensando que tal vez sea la elección incorrecta.

+7

Voy a tener usted que la atención al cliente que ofrecemos a Heroku es de mala calidad de primera clase. –

+1

Nunca me ha impresionado la calidad de las respuestas en SO. Simplemente creo que es una forma poco convincente de brindar soporte al cliente para un producto, sin importar cuán técnico sea. ¿Qué sucede si tengo que proporcionar detalles de la cuenta personal? No es exactamente lo que quiero compartir con el mundo (como me di cuenta cuando necesité modificar la publicación original). –

+0

¿Has visto [esta pregunta] (http://stackoverflow.com/q/3617113/62576)? ¿Especialmente la parte sobre registrar tu clave pública con git? –

Respuesta

2

que he encontrado el mismo problema, y ​​esta es mi teoría en cuanto a lo que está pasando:

he firmado para Heroku hace mucho tiempo, dándoles mi clave pública GitHub. Al intentar el git push heroku master habitual, va y busca mi clave privada, que se encuentra en ~/.ssh/github_rsa. Luego falla silenciosamente con el mensaje que publicaste.

Sin embargo, intenté más tarde llamar al ssh en otro servidor utilizando el indicador -i para especificar mi "archivo de identidad" (es decir, clave privada) y me solicitó la contraseña para mi clave privada. Después de haber "desbloqueado" la clave privada, funciona el comando git push heroku master. Algunas conclusiones:

  • Mientras ssh le pedirá la contraseña a un archivo de identidad, git no lo hará.
  • Si desbloquea el archivo de identidad con otro método, como ssh, permanecerá desbloqueado para su uso de git.
  • No parece haber ninguna documentación sobre cómo eliminar permanentemente la protección con contraseña en un archivo de identidad, incluido con el comando común de Unix keytool.
  • Las soluciones anteriores para crear un nuevo par de claves públicas/privadas parecen ser una solución para este problema de contraseña, sin saber cuál es el problema.
+0

Creo que estás en lo correcto con el error silencioso. Tan agravante ... –

148

Hay una gran variedad de soluciones en la web. Intentaré condensar las opciones disponibles en una publicación. Intente nuevamente su conexión después de cada paso.

  • Paso 1: Se ha intentado que la adición de clave pública a Heroku

    heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will prompt you to pick one of your keys 
    
  • Paso 2: Generar un nuevo conjunto de claves SSH, a continuación, intentar el primer paso de nuevo

    https://help.github.com/articles/generating-ssh-keys

  • Paso 3: verifique y/o modifique su archivo de configuración

    vim ~/.ssh/config 
    
    Host heroku.com 
    Hostname heroku.com 
    Port 22 
    IdentitiesOnly yes 
    IdentityFile ~/.ssh/id_rsa <--- Should be your public SSH key 
    TCPKeepAlive yes 
    User [email protected] 
    
  • Paso 4: Eliminar el control remoto heroku de git, recrear la conexión, agregar el control remoto a través de la creación de heroku solo será una opción para los nuevos repositorios. Asegúrese de eliminar el anterior cesión temporal que ha intentado originalmente para crear

    $ git remote rm heroku 
    $ heroku create 
    
  • Paso 5: Vuelva a instalar llaves

+10

¡El paso 1 hizo el truco para mí! (Sin embargo, recreé mis claves SSH para mi máquina y Github antes de llevarlas a Heroku.) ¡Gracias! – ATSiem

+0

paso 1 funciona ... gracias mucho !! –

+1

NINGUNO de estos funcionó para mí, a pesar de hacerlo muy cuidadosamente desde la cima dos veces con instalaciones limpias y todo. Al final, lo que hizo que todo funcionara fue asegurarse de que mi clave GitHub y la clave Heroku fueran las mismas. Ni siquiera entiendo por qué eso hizo la diferencia, a menos que de alguna manera no me diera cuenta de que Heroku depende de GitHub, pero de alguna manera resolvió el problema. Las claves se pueden cambiar en la configuración de la cuenta en GitHub. Creo que deberías agregar esto a tu respuesta. – Aerovistae

13

su clave heroku y GitHub Heroku Toolkit no están sincronizados.

  • determinar qué tecla que desea utilizar (se recomienda la creación de uno nuevo es decir heroku_rsa).

  • Agregue la clave a github.

  • agregar la clave misma a heroku usando: heroku keys:add

+4

I * realmente, realmente, realmente * desearía haber leído esta respuesta hace cuatro horas. Aunque supuse que aprendí mucho en el camino, entonces, no todo fue malo. – Aerovistae

+0

Tengo dos cuentas Heroku diferentes (una usando mi correo electrónico de trabajo, para proyectos en el trabajo, la otra utilizando mi correo electrónico personal, para proyectos independientes). Heroku no me deja usar la misma clave para ambos. Entonces, ¿cómo puedo usar mi clave Github para ambos? (¿Y por qué Heroku específicamente necesita usar mi clave de Github de todos modos? ¿Qué tiene que ver Heroku con Github? ¿Qué pasa si no usé Github?) Estoy tan confundido – callum

+0

¡Funcionó como un amuleto! ¡Gracias! – Shashank

0

Si ninguna de las otras soluciones funciona para usted, asegúrese de que ha iniciado sesión en el shell de Linux con su cuenta y no con raíz cuenta.

De esta manera, si se está ejecutando con el usuario que no es el dueño de las llaves ssh, git buscará las teclas equivocadas para autenticar

1

En mi caso, parecía que el problema era que tenía ssh- agente ejecutándose en segundo plano, y no se le ha agregado la clave privada correspondiente.

ps -afe | grep ssh-agent 

ssh-add ~/.ssh/id_rsa_heroku_github 

También he tenido que añadir la clave pública de GitHub (manualmente) y heroku

heroku keys:add ~/.ssh/id_rsa_heroku_github.pub 
Cuestiones relacionadas