Heroku 'Permiso denegado (clave pública) fatal: No se pudo leer desde los repositorios remotos' problemas

139

He buscado muchas horas buscando una solución a mi problema aparentemente fácil de solucionar. No es que mi búsqueda no haya resultado nada, es que mi búsqueda encontró tantas soluciones diferentes, ninguna de las cuales ha funcionado.

De todos modos, simplemente no puedo empujar, tirar o buscar desde mi repositorio Heroku desde mi Mac. Cada intento me da (como si se estuviera burlando de mí) el siguiente error:

'Permiso denegado (clave pública). fatal: no se pudo leer desde el repositorio remoto.

Intenté (y volví a intentar) solucionarlo de muchas maneras diferentes. Como dije, pasé una buena parte de los últimos dos días buscando una respuesta. Estas son algunas de las cosas que he probado:

  • teclas heroku: borrar seguidas de teclas heroku: agregar
  • Regenerar una clave ssh por mi cuenta con 'ssh-keygen -t rsa'
  • Borrar mi directorio .ssh, seguido de las teclas heroku: borrar, seguido de generar una clave ssh
  • Eliminar mi aplicación en heroku y recrear una (afortunadamente no había mucho allí)

Puedo buscar desde mi repositorio GitHub bien, así que sé que no es conectividad de red (pinging heroku también funciona).

Como solución improvisada (que espero no se convierta en permanente), he iniciado sesión en mi instancia de Ubuntu Amazon AWS ec2. Tirar y empujar hacia y desde Heroku funciona perfectamente. Por esta razón, todavía siento que el problema radica en la tecla ssh de mi Mac. Ambas teclas aparecen debajo de mi cuenta de Heroku. ¿Importa la dirección de correo electrónico al final de la clave?

EDITAR: puedo empujar y tirar de GitHub bien (sin embargo, no estoy usando ssh), entonces ¿por qué no Heroku?

En este punto estoy dispuesto a intentar cualquier cosa. ¡Gracias!

thebradbain
fuente
¿Estableciste una frase de contraseña para tu clave heroku? ¿Y supongo que esto ( stackoverflow.com/a/16753800/6309 ) no ayuda? O doble comprobación stackoverflow.com/a/16753800/6309
VonC
Lamentablemente, todavía se niega a trabajar.
thebradbain
a veces esto sucede cuando heroku está en mantenimiento: status.heroku.com
Mavis

Respuestas:

284

Sé que esto ya ha sido respondido. Pero me gustaría agregar mi solución, ya que puede ser útil para otros en el futuro.

Un error de clave común es: Permission denied (publickey). Puede solucionar esto utilizando keys:addpara notificar a Heroku sobre su nueva clave.

En resumen, siga estos pasos: https://devcenter.heroku.com/articles/keys

Primero debe crear una clave si no tiene una:

ssh-keygen -t rsa

En segundo lugar, debe agregar la clave a Heroku:

heroku keys:add
Kris Hollenbeck
fuente
2
Gracias kris, alguien del futuro :) esto funciona para mí
Ahmad Ajmi
8
heroku keys: agregar fue mi tutorial perdido, supongo ... ¡gracias! :)
Ole Henrik Skogstrøm
La clave sólo tiene que ser generada si no tiene uno todavia, en mi caso, yo todavia tenía la llave y sólo necesitaba para agregar la clave para heroku
joseramonc
44
El primero es innecesario. heroku keys:addte ayudará a crear uno si no tienes una clave.
Mygod
Ejecutar ssh-keygen -t rsasi RSAno se genera lo contrario heroku keys:adddebería ser suficiente
Volatil3
122

Solo pensé en compartir que encontré la respuesta a mi propia pregunta.

Escribir mi problema me lo dejó aún más claro, e investigué más a fondo dónde creía que estaba mi problema: la clave ssh

Resulta que tenía razón. El problema no era con la clave en sí, sino que no la había agregado a la lista de claves ssh conocidas de mi Mac local. Entonces, aunque mi cuenta de Heroku tenía la clave correcta cargada, mi Mac no pudo autenticarse porque no pudo encontrar esa clave en mi computadora. ¿La solución?

ssh-add ~/.ssh/id_rsa
#and, to confirm it's been added to the known list of keys
ssh-add -l

Me gustaría dar crédito a https://help.github.com/articles/error-permission-denied-publickey por ser una buena referencia.

thebradbain
fuente
55
Gracias por sus comentarios, más exactos a su situación que mi comentario inicial. +1
VonC
44
En Windows, uno tendrá que comenzar Git Bash(haga clic con el botón derecho en una carpeta), e inicie uno ssh-agentque sea posible ejecutando `ssh-agent`( tenga en cuenta las teclas de retroceso) y luego agregue la clave como se describe anteriormente. Tengo que hacer esto cada vez que inicio Git Bash/ ssh-agent, se olvida lo que se agregó.
TWiStErRob
Hice esto y todavía no funcionó. Terminé teniendo que agregar una variable de entorno llamada HOME establecida en el directorio en el que estaba mi carpeta .ssh
Justin
Gracias, ¡nunca habría resuelto esto!
Mark Hansen
Esto solucionó mi problema, no la respuesta más votada, gracias :)
Ryan Brodie
31

Tuve exactamente el mismo error (en Windows 7) y la causa fue diferente. Lo resolví de una manera diferente, así que pensé en agregar la causa y la solución aquí para otros.

Aunque el error parecía apuntar a heroku, realmente estaba diciendo el error "Heroku can't get to the git repository". Juré que tenía las mismas claves en todos los servidores porque lo creé y lo cargué uno tras otro al mismo tiempo.

Después de pasar casi un día en esto, me di cuenta de que porque git solo me mostraba la huella digital y no la clave real. No pude verificar que su clave coincida con la de mi HD o heroku. Miré en el archivo de hosts conocidos y adivina qué ... muestra las claves para cada servidor y pude ver claramente que las claves públicas git y heroku no coincidían.

1) Eliminé todos los archivos en mi carpeta de claves, la clave de github usando su sitio web y la clave de heroku usando git bash y el comando heroku keys:clear

2) Seguí las instrucciones de github aquí para generar un nuevo par de claves y subir la clave pública a git

3) usando git bash- heroku keys:add para cargar la misma clave a heroku.

Ahora git push heroku masterfunciona

Qué pesadilla, espero que esto haya ayudado a alguien.

Bryan

Bryan Myers
fuente
1
Me detuve el cerebro en esto hasta que vi tu publicación. Tan pronto como hice las teclas git y heroku iguales, todo estuvo bien. Pero no entiendo por qué necesitan ser lo mismo.
Kishore Masand
Gracias por la respuesta que pasaron años con este problema
Ivan Bacher
muy útil git enlace de documentación, todo funciona perfecto
HotJard
Esto funcionó para mí después de un par de días de tratar de resolverlo. Me sorprende que Heroku pueda seguir en el negocio con un problema de usabilidad tan desagradable. Debería haber una manera más fácil de hacer esto.
Luke F.
Gracias. Trabajó para mi; solo una cosa: en el enlace de github en alguna parte dice hacer "ssh-add". Allí tuve un problema, pero encontré la solución aquí: stackoverflow.com/questions/17846529/…
Alin Ciocan
17

El problema que tenía es que solo estaba usando https para mi cuenta de GitHub. Necesitaba asegurarme de que mi cuenta de GitHub estaba configurada para acceso ssh y que GitHub y heroku usaban las mismas claves públicas. Estos son los pasos que tomé:

  1. Navegue al directorio ~ / .ssh y elimine id_rsa e id_rsa.pub si están allí. Empecé con nuevas claves, aunque podría no ser necesario.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. Siga los pasos en gitHub para generar claves ssh
  3. Inicie sesión en heroku, cree un nuevo sitio y agregue sus claves públicas:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master
    
sjking
fuente
6

Tuve el mismo caso en Linux Ubuntu y solo lo arreglé, parece que el sistema operativo estaba confundido entre /root/.ssh/ y home / user / .ssh / dir, lo que hice fue:

  1. eliminó todas las claves del directorio raíz y home / user .shh.
  2. generó una nueva clave, asegúrese de prestar atención a la ruta de creación (/home/you/.ssh/id_rsa) o (/root/.ssh/id_rsa)
  3. comprobar las llaves heroku heroku keys
  4. si las llaves están claras heroku keys:clear
  5. heroku keys:addahora aquí, si heroku no pudo encontrar una clave y le pidió que generara una, no, y esto significa que tiene el mismo problema que el mío, haga el comando de agregar de esta manera, heroku keys:add /root/.ssh/id_rsa.publa ruta que agregará será la que obtuvo en el paso 2.
  6. prueba git push heroku masterahora
oqx
fuente
3

Mi camino en Windows 8

  1. Agregue un directorio con ssh-keygen a la variable PATH del sistema, generalmente C: \ Archivos de programa (x86) \ Git \ bin

  2. Abra CMD, vaya a C: \ Users \ Me \

  3. Generar clave SSH ssh-keygen -t rsa

    Introduzca el archivo en el que guardará la clave (//.ssh/id_rsa): .ssh / id_rsa (cambie una ruta incorrecta predeterminada a .ssh / somegoodname_rsa)

  4. Agrega la llave a Heroku heroku keys:add

    Seleccione una clave creada de una lista

  5. Ve al directorio de tu aplicación, escribe un código hermoso

  6. Inicia un repositorio git git init git add . git commit -m 'chore(release): v0.0.1

  7. Crear aplicación Heroku heroku create

  8. Implemente su aplicación git push heroku master

  9. Abre tu aplicación heroku open

Ivan Rave
fuente
2

Tuve un problema similar y probé muchas cosas. En última instancia, lo que funcionó para mí fue tener instalado Gnu en Windows ( https://github.com/bmatzelle/gow/releases ) y asegurarme de que estaba usando la herramienta ssh dentro de ese directorio y no la que tenía Git. Una vez instalado, pruebe con (asegúrese de que esté en su entorno RUTA que precede a Git \ bin)

C:\Git\htest2>which ssh
C:\Program Files (x86)\Gow\bin\ssh.BAT

Usé masilla y concurso como se describe aquí: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-putty-plink-pageant/

Una vez que las claves se hayan enviado a heroku (claves heroku: agregue c: \ Users \ Person.ssh \ id_rsa.pub), use

ssh -v <username>@heroku.com 

y asegúrese de que su pila muestre el uso de Masilla, es decir, una pila que funcione:

Looking up host "heroku.com"
Connecting to 50.19.85.132 port 22
Server version: SSH-2.0-Twisted
Using SSH protocol version 2
**We claim version: SSH-2.0-PuTTY_Release_0.62**
Using Diffie-Hellman with standard group "group1"
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-rsa 2048 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "*--ommitted for security--*".
**Trying Pageant key #0**
Authenticating with public key "rsa-key-20140401" from agent
Sending Pageant's response
Access granted
Opened channel for session
Server refused to allocate pty
Server refused to start a shell/command
FATAL ERROR: Server refused to start a shell/command

Uno que se estaba ejecutando anteriormente y falló:

C:\Git\htest2>ssh -v <username>@[email protected]
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Connecting to heroku.com [50.19.85.156] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Person/.ssh/identity type -1
debug1: identity file /c/Users/Person/.ssh/id_rsa type 1
debug1: identity file /c/Users/Person/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version Twisted
debug1: no match: Twisted
debug1: Enabling compatibility mode for protocol 2.0
**debug1: Local version string SSH-2.0-OpenSSH_4.6**
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Host 'heroku.com' is known and matches the RSA host key.
debug1: Found key in /c/Users/Person/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /c/Users/Person/.ssh/identity
debug1: Offering public key: /c/Users/Person/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Trying private key: /c/Users/Person/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
usuario3484361
fuente
Solo para decir que esto está usando Windows 8 (8.1). También parece que la herramienta GoW ssh es la clave, ya que pude usar eso sin las piezas de masilla y usar ssh-keygen.
user3484361
2

necesita crear una nueva clave ssh escribiendo lo siguiente: ssh-keygen -t rsa

Luego debe agregar: - teclas heroku: agregar

Entonces, si escribe - heroku abierto

El problema ha sido resuelto.

Me funcionó de todos modos, podrías intentarlo ...

nabin
fuente
2

Obtuve el mismo error y debido a que tengo 4 teclas ssh, intenté seguir:

ssh-keygen -t rsa
heroku keys:add

entonces, cuatro opciones muestran:

1) github_rsa.pub
2) id_boot2docker.pub
3) id_rsa.pub
4) sshkey.pub

Elijo 3), el más nuevo

Entonces, corrijo el error.

rocLv
fuente
1

Utilizo este método para resolver este problema. Quizás puedas probarlo.

"Habilitar ssh-agent"

  1. Descargar git

http://git-scm.com/

  1. Instalarlo

  2. Habilitar ssh-agent

C: \ Archivos de programa \ Git \ cmd

start-ssh-agent

El mensaje desapareció después de que habilité el agente Espero que esto te ayude

徐啟倫
fuente
1

Me gustaría agregar otra solución ya que no la vi aquí. Mi problema era que heroku se vinculaba a la URL incorrecta (ya que seguía jugando con los nombres de las URL). Editar la url remota resolvió mi problema:

git remote set-url heroku <heroku-url-here>
ytv
fuente
0

Tuve el mismo problema. Y traté de restablecer mis llaves como todos decían, pero aún así no funcionó. Porque fue porque cambié el nombre de la aplicación.

Entonces, lo que hice fue restablecer mis claves y también cambiar el nombre de la aplicación desde la consola. Consulte esta pregunta para obtener más información: problema de la aplicación push de Heroku

Alin Ciocan
fuente
0

SO So So simple solución, vaya a c: /Users/user_name/.ssh/ y elimine todos los pares de claves pub / private, de esta manera heroku generará claves para usted.

00imvj00
fuente
0

Tuve un error heroku ssh similar que no pude resolver.

Como solución alternativa, utilicé la nueva característica heroku http-git (transporte http para el control remoto "heroku" en lugar de ssh). Detalles aquí: https://devcenter.heroku.com/articles/http-git

(Versión corta: si ya tiene un proyecto configurado de manera estándar, ejecute heroku git: remote --http-init para cambiar el control remoto "heroku" a http).

Una buena solución rápida si no tiene tiempo para arreglar / solucionar un problema de ssh.

FullTimeCoderPartTimeSysAdmin
fuente
En mi caso, el problema parece estar relacionado con ":" en rutas remotas ssh. (Git 1.9.4 para Windows.) Por alguna razón ssh: // git @ host: repo falla con "fatal: No se pudo leer desde el repositorio remoto" mientras ssh: // git @ host / repo "tiene éxito.
FullTimeCoderPartTimeSysAdmin