git push heroku master Permiso denegado (clave pública). fatal: el extremo remoto colgó inesperadamente

85

Por favor, disculpe un poco de frustración, que trataré de mantener bajo control ya que Heroku está usando SO como su soporte al cliente (lo cual creo que es de mala calidad por decir lo menos).

Durante las últimas cinco horas he intentado publicar una aplicación, pero invariablemente algo sale mal con las claves. He leído docenas de artículos y he probado consejo tras consejo en un esfuerzo por averiguar dónde, en el estúpido y completamente opaco proceso, Heroku está metiendo la pata.

Mi caso de uso no es tan difícil: he creado un nuevo par de claves para mis aplicaciones heroku. He configurado esa clave para que sea mi clave:

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

Puedo iniciar sesión y "crear" una aplicación (nombre estúpido, ya que parece estar creando un repositorio de git, no cualquier tipo de aplicación) sin problema. Pero cada * maldita * vez que trato de impulsar mi aplicación, obtengo:

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

No tengo idea de que WTF está sucediendo; Estoy atascado golpeándome la cabeza contra un teclado sin más remedio que esperar que el dios todopoderoso de Google pueda responder. Y Google no está respondiendo (bueno, déjame retractarme, 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 nuestras para no hacer absolutamente nada , creo que tal vez sea la elección incorrecta.

Travis Jensen
fuente
7
Le haré saber que la atención al cliente que brindamos a Heroku es de mala calidad de primera clase.
Robert Harvey
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 datos personales de la cuenta? No es exactamente lo que quiero compartir con el mundo (como me di cuenta cuando necesitaba modificar la publicación original).
Travis Jensen
¿Viste esta pregunta ? ¿Especialmente la parte sobre el registro de su clave pública con git?
Ken White
7
Mismo problema, tengo la solución aquí: http://www.whatibroke.com/?p=284
1
La solución vinculada de Remi funcionó para mí.
Deborah

Respuestas:

149

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

  • Paso 1: Intente agregar su 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: Genere un nuevo conjunto de claves SSH, luego intente el primer paso nuevamente

    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: Elimine el control remoto heroku de git, vuelva a crear la conexión, agregar el control remoto a través de heroku create solo será una opción para nuevos repositorios. Asegúrese de eliminar su antiguo repositorio que originalmente intentó crear

     $ git remote rm heroku
     $ heroku create
    
  • Paso 5: Reinstale Heroku Toolkit

jquintana
fuente
10
¡El paso 1 me sirvió! (Sin embargo, recreé mis claves SSH para mi máquina y Github antes de enviarlas a Heroku). ¡Gracias!
ATSiem
1
Nada de esto funcionó para mí, a pesar de hacerlo con mucho cuidado desde la parte superior dos veces con instalaciones limpias y todo. Al final, lo que hizo que todo funcionara fue asegurarme de que mi clave de GitHub y la clave de Heroku fueran iguales. Ni siquiera entiendo por qué eso marcó la diferencia, a menos que de alguna manera no me di cuenta de que Heroku depende de GitHub, pero de alguna manera solucionó 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.
temporary_user_name
1
Creo que la línea IdentityFile debería ser su clave ssh privada. Ver stackoverflow.com/a/8874946/2816571
Paul
2
¿Quiso decir heroku create? git heroku createno es una cosa, que yo sepa.
Michael Dorst
1
Guau. No se me ocurre nada agradable que decir sobre esta experiencia. Seguí numerosas recetas, incluida la desinstalación / reinstalación de git, github y la sustitución de putty por msysgit. El paso 1-3 finalmente lo hizo, pero el cambio tenía que estar en github ssh_config. Después de soltar y restablecer mis claves de github varias veces sin ningún problema, el proceso de heroku fue realmente frustrante.
miércoles
13

Tu clave heroku y tus claves github no están sincronizadas.

  • Determine qué clave desea utilizar (recomiende crear una nueva, es decir, heroku_rsa).

  • Agrega la clave a github.

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

Robert Christian
fuente
4
Yo realmente, realmente, realmente hubiera gustado haber leído esta respuesta hace cuatro horas. Aunque supuse que aprendí mucho en el camino, así que no del todo mal.
temporary_user_name
Tengo dos cuentas diferentes de Heroku (una usando mi correo electrónico de trabajo, para proyectos en el trabajo, la otra usando 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 necesita específicamente usar mi clave de Github de todos modos? ¿Qué tiene que ver Heroku con Github? ¿Qué pasa si no
usé
¡Trabajado como un encanto! ¡Gracias!
Shashank
2

Me he encontrado con el mismo problema, y ​​esta es mi teoría sobre lo que está sucediendo:

Me inscribí en Heroku hace mucho tiempo, dándoles mi clave pública de github. Al intentar lo habitual git push heroku master, busca mi clave privada, que se encuentra en ~/.ssh/github_rsa. Luego falla silenciosamente con el mensaje que publicó.

Sin embargo, más tarde intenté sshingresar a otro servidor usando la -ibandera para especificar mi "archivo de identidad" (es decir, clave privada), y me pidió la contraseña de mi clave privada. Habiendo "desbloqueado" la clave privada, el git push heroku mastercomando funciona. Algunas conclusiones:

  • Aunque sshle pedirá la contraseña de un archivo de identidad, gitno lo hará.
  • Si desbloquea el archivo de identidad con otro método, como ssh, permanecerá desbloqueado para su gituso.
  • No parece haber ninguna documentación sobre cómo eliminar permanentemente la protección con contraseña en un archivo de identidad, incluso con el comando común de Unix keytool.
  • Las soluciones anteriores para crear un nuevo par de claves pública / privada parecen ser una solución para este problema de contraseña, sin saber que ese es el problema.
Owensmartin
fuente
1

Para mí, parecía que el problema era que tenía ssh-agent ejecutándose en segundo plano y no se le había agregado la clave privada relevante.

ps -afe | grep ssh-agent

ssh-add ~/.ssh/id_rsa_heroku_github

También tuve que agregar la clave pública a github (manualmente) y heroku

heroku keys:add ~/.ssh/id_rsa_heroku_github.pub
cobberboy
fuente
0

Si ninguna de las otras soluciones funciona para usted, asegúrese de haber iniciado sesión en Linux Shell con su cuenta y no con la cuenta de root .

De esa manera, si está ejecutando con el usuario que no es el propietario de sus claves ssh, git buscará las claves incorrectas para autenticarse

Saulo Falcao
fuente