No se puede presionar a Heroku porque la huella digital clave

131

Soy nuevo en Rails y estaba tratando de implementar una aplicación muy simple en Heroku. Esta es la segunda aplicación que implemento, y la primera que pude hacerlo bien. Sin embargo, estoy teniendo algunos problemas con este. Cada vez que " git push heroku master ", aparece este error:

! Su clave con huella digital xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx no está autorizado para> acceder a my_heroku_app.

fatal: el extremo remoto colgó inesperadamente

Intenté administrar mis claves después de iniciar sesión en heroku. Si escribo en mi consola " heroku keys ", entonces obtengo:

No hay claves para mi dirección.

Sin embargo, si ejecuto el comando " heroku keys: add " obtengo

Clave pública existente encontrada: /Users/michele/.ssh/id_rsa.pub ¡Carga de clave pública ssh /Users/michele/.ssh/id_rsa.pub! La huella digital ya existe. Utilice una clave ssh por cuenta de Heroku

¡Por favor, ayúdame! Esto es muy frustrante, ¡no tengo idea de lo que está mal! Gracias

mre
fuente

Respuestas:

288

Tuve el mismo problema, seguí esta publicación y otras del mismo tipo sin éxito: - ((

Finalmente, encontré la solución: ¡tenía que agregar mi nueva identidad rsa en mi máquina!

Entonces, antes que nada, creé una nueva clave rsa:

ssh-keygen -t rsa -C "giordano.scalzo[at]gmail.com" -f  ~/.ssh/id_rsa_heroku

luego lo agregué a mi máquina

ssh-add ~/.ssh/id_rsa_heroku

y, finalmente, a Heroku

heroku keys:add ~/.ssh/id_rsa_heroku.pub

Después de esto,

git push heroku master

¡trabajado como un encanto!

Espero que esto ayude.

Giordano Scalzo
fuente
47
Esto estuvo muy cerca para mí. Pero había una cosa más. Tenía dos cuentas de heroku. El primero había agregado mi clave SSH predeterminada para mi máquina. No importa lo que hice tratando de arreglar mi segunda cuenta, no tomaría hasta que elimine mi clave predeterminada de la primera cuenta. SSH-AGENT enviará la primera clave por defecto, causando este problema. La solución es crear claves específicas para heroku (no el valor predeterminado) para cada cuenta
Tom Carchrae
13
Tuve el mismo problema que @TomCarchrae. Salí de la cuenta que parecía estar permanentemente bloqueada heroku logout, inicié sesión en la otra cuenta y eliminé la clave RSA predeterminada de esa cuenta. Después de eso pude presionar con esta clave recién generada.
Ross Allen
14
Personalmente, hice el equivalente de ssh-add ~/.ssh/id_rsa_herokuaunque el mío fue ssh-add ~/.ssh/identity.heroku.fooporque también estoy usando https://github.com/ddollar/heroku-accounts (un administrador de cuentas múltiples para Heroku).
user664833
1
Otra cosa a tener en cuenta: si tiene demasiadas claves SSH, no podrá iniciar sesión porque prueba las claves en orden (y luego lo expulsan del inicio de sesión por demasiadas fallas). Esto parece ser una falla con el agente ssh (en ubuntu de todos modos, pero supongo que otras implementaciones también). por lo tanto, si se está sacando el pelo, intente mover su directorio ~ / .ssh y comenzar uno nuevo (luego puede tirar de las teclas una por una).
Tom Carchrae
77
Puede influir en la clave que se envía agregando una entrada de host en ~ / .ssh / config para heroku.com apuntando a la clave que desea. Esta fue una solución rápida para mí, ya que seguía intentando usar mi clave predeterminada y fallaba. Sin embargo, esto probablemente no ayudará en el caso de varias cuentas.
Dnewcome
61

Yo también tengo múltiples claves y múltiples cuentas heroku, así que me encuentro con este problema cada pocos meses. Como se mencionó a Giordano Scalzo, Tom Carchrae y user664833, el problema principal es ssh-agent, que usted controla mediante el ssh-addcomando. La página man ( man ssh-add) es bastante clara y concisa, así que échale un vistazo.

Puede enumerar todas las claves que conoce ssh-agent con:

ssh-add -l

Puede eliminar todas las claves que ssh-agent conoce con:

ssh-add -D

O elimine una clave específica con

ssh-add -d ~/.ssh/id_rsa_example_key_file_use_your_own

No te preocupes En realidad, no está eliminando las claves, solo cambiando las que ssh-agent intenta usar automáticamente, por ejemplo, cuando intenta empujar a heroku. Es fácil agregar y eliminar claves según sea necesario, por lo que para mí, cuando me siento frustrado por este problema, la forma más fácil de solucionarlo es eliminar todas las claves y volver a agregar solo la que quiero usar en este momento.

ssh-add -D
ssh-add ~/.ssh/id_rsa_example_use_this_one_i_mean_it
Towynlin
fuente
1
esto funcionó bien para mí, sin embargo, al intentar volver a agregar mi clave ssh predeterminada, seguí solicitando una frase de contraseña (en Mtn Lion), ¿no crees que tengo una? Reinicié y volví a mi ssh predeterminado todo bien, también encontré este stackoverflow.com/questions/7927750/… que funciona muy bien
house9
golpear mi cabeza contra la pared por un buen rato sobre este, y este fue el último paso requerido, ¡gracias!
griswoldbar
Si probó el primer método, entonces este (y obtiene un error de Permiso denegado (clave pública) cuando intenta presionar su control remoto Heroku) probablemente haya olvidado volver a ejecutar las teclas heroku: agregar comando. De todos modos, muchas gracias! Esto lo hizo por mi.
Hairgami_Master
38

Su computadora tiene una clave SSH, pero esa clave SSH está asociada con otra cuenta de Heroku.

Si necesita usar ambas cuentas para diferentes aplicaciones en la misma computadora, debe hacer una nueva clave SSH en su máquina y cargarla en Heroku:

$ ssh-keygen

Asegúrese de guardarlo como '/Users/User/.ssh/new_id_rsa.pub' cuando el mensaje le pregunte.

$ heroku keys:add /Users/User/.ssh/new_id_rsa.pub 

Luego debe agregar un host alternativo para heroku.comsu ~/.ssh/config:

Host heroku-alt
HostName heroku.com
IdentityFile ~/.ssh/new_id_rsa

Y luego actualice el .git/configen su proyecto para usar el alias de host:

[remote "heroku"]
  url = git@heroku-alt:myapp.git
  fetch = +refs/heads/*:refs/remotes/heroku/*

Al elegir entre herokuy heroku-alten el control remoto de los .git/configarchivos de proyectos específicos, puede administrar qué proyectos usan qué credenciales.

Daniel X Moore
fuente
1
Sí, ese también fue el problema para mí. Accediendo a dos cuentas de Heroku desde el mismo cliente. Gracias.
Bernard
Estoy tratando de hacer este método, pero "Host heroku-alt" me da el error: Host heroku-alt not found: 3(NXDOMAIN). Estoy poniendo esto en la terminal de Mountain Lion. ~/.ssh/configtampoco existe, solo un montón de .pubarchivos y uno llamado known_hosts. ¿Y las ideas?
JVG
@Jascination Deberá crear ~ / .ssh / config y colocar los contenidos que figuran en la respuesta. Cuando haya terminado de guardar el archivo y contendrá los Host, HostNamey las IdentityFilelíneas. Entonces debería funcionar bien.
Daniel X Moore
3
¡Excelente! ¡Esta técnica es tan elegante!
kinopyo
¡Hombre! Eres increíble. Ejecutar paso a paso finalmente me alivia. Gracias !!
softvar
14

Aquí hay una explicación muy clara que falta en la documentación de Heroku u otras respuestas a la pregunta. Al menos toda la información no parece aparecer en ningún lugar. También le permite comprender el problema de una manera que la herramienta de cuentas no lo hace.

Heroku te identifica de 2 maneras:

El primero está en .git / config

[heroku]
    account = acccount_name

Esto parece permitirle realizar operaciones básicas usando heroku

La segunda forma en que heroku te identifica es mediante cualquier operación que use ssh (git push). Heroku lo identificará con su clave ssh, como se indica aquí: https://devcenter.heroku.com/articles/keys

Este par de claves se usa para la criptografía sólida y eso lo identifica de manera única como desarrollador al impulsar cambios de código.

Por lo tanto, cada cuenta de heroku en la que trabaje tendrá que enviar una clave diferente a heroku cuando use ssh. Sigue cualquier tutorial para crear tus claves ssh.

La clave es hacer que SSH use diferentes claves para cada cuenta de Heroku. ¿Cómo se configura esto? Tendrás que hacer 2 cosas:

1) Tendrá que crear un dominio 'ficticio' que su .ssh / config interceptará y reconfigurará. Esto le dirá a ssh el dominio 'real' que desea y qué clave ssh especial usar.

Host heroku.my_unique_key
  HostName heroku.com
  IdentityFile ~/.ssh/identity.heroku.my_unique_key
  IdentitiesOnly yes

2) Cambie su .git / config para usar eso cuando use git push. En lugar de heroku.com, use el dominio ficticio que configuró en su .ssh / config

[remote "heroku"]
    url = [email protected]


[remote "heroku"]
    url = [email protected]_unique_key:myapp.git

Eso es todo :) Un poco complicado y un poco simple al mismo tiempo. Me ha llevado 3 años golpear mi cabeza contra la pared y probar y error descubrir esta información. Debería estar claramente documentado en alguna parte, pero al menos es un comienzo.

pixelearth
fuente
Lo único del nombre de host fue mi problema. Muchas gracias pixelearth.
FluffyJack
Muchos Gracias Por Favor
EE33
9

necesitará crear nuevas claves y agregarlas

especificar un nuevo nombre de archivo después de ejecutar

ssh-keygen

entonces (en mi caso)

heroku keys:add /home/alex/.ssh/alex_heroku_rsa.pub
akmur
fuente
3

Tengo el mismo problema la semana pasada. Este enlace me ayudó. Espero que te ayude un poco. http://devcenter.heroku.com/articles/keys

Benjamín
fuente
He visto ese enlace, he intentado eliminar y agregar mis claves nuevamente, sin embargo, todavía no puedo hacer que funcione.
mre
¿Has solucionado este problema?
Benjamin
1
¿Puedes resumir las instrucciones en este enlace? Tratamos de evitar enlaces solo respuestas aquí.
Águila de cera
Esto solo explica cómo generar claves, no cómo administrar múltiples.
Macario
3

En mi caso, heroku keysya tenía la clave correcta en la lista. Entonces, todo lo que tenía que hacer era correr ssh-add /path/to/that/keyy luego todo comenzó a funcionar bien.

M. Scott Ford
fuente
2

También tengo dos cuentas de Heorku y, como solución alternativa, "invité" a mi cuenta principal (la que Heroku usa automáticamente la clave) como colaboradora de mi proyecto.

Fabio CR
fuente
1

Solo quiero agregar la solución para usuarios de Windows.

  1. Primera descarga "Generador de Putty Key"

  2. Cree una clave con el OBS que necesita para mover el mouse sobre el área en blanco para generar aleatoriedad.

  3. Guarde sus claves, solo recuerde cambiar el nombre de su clave a [nombre] .pub

  4. ¡Corre heroku keys:adden la terminal!

Carriles principiantes
fuente
0

En mi caso, el problema era la versión ssh que estaba usando. Acabo de establecer la variable de entorno GIT_SSH en otra ("GIT_SSH = / usr / bin / ssh") y todo funcionó bien para mí.

gfhuertac
fuente