Puede SSH en el server, pero no git push

No puedo enviar datos a mi repository remoto de git almacenado en mi instancia de Amazon ec2.

Mi file de config ssh local tiene una input de host que se ve así:

 Host ec2 HostName ec2-54-89-205-210.compute-1.amazonaws.com User ec2-user IdentityFile ~/.ssh/ec2TestB 

Y entonces puedo ejecutar el command ssh ec2 y me conectaré con éxito al ec2 .

Luego, creé un git repo en el ec2 en la carpeta root llamada testGitRoot . En mi máquina local, creé un git repo llamado testGitLocal . Luego ec2 repo ec2 con git remote add origin ec2user@ec2-54-89-205-210.compute-1.amazonaws.com:/root/testGitRoot (también lo intenté sin la parte ec2user@ … no seguro si eso es necesario).

Poco cuando ejecuto git push origin master obtengo:

 Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 

Entonces mi pregunta es ¿qué conceptos me falta aquí? Si puedo conectarme a través de ssh con ssh ec2 , entonces ¿por qué no puedo presionar mi repository? Una cosa que no está clara para mí es cómo exactamente los pasos de configuration de git que tomé incluso utilizan ssh . Normalmente, siempre estoy presionando a github, en cuyo caso tomo la url ssh y configuro eso como mi control remoto. En este caso, solo estoy configurando mi ec2 repo como remoto, donde esa url es solo ec2Domain:path/to/git/repo . Así que no estoy seguro de si el git push origin master está usando ssh , y si lo es, ¿por qué parece que falla sobre la key pública cuando el command ssh ec2 no?

Usted configura el repository usando el usuario ec2-user , como se muestra en su file ssh_config:

 Host ec2 User ec2-user 

Pero configura el control remoto para usar un nombre de usuario diferente, ec2user :

 git remote add origin ec2user@ec2 ... 

Dices que ssh funciona, pero git no. Por lo tanto, es probable que git tenga el nombre de usuario incorrecto.

Para solucionarlo, simplemente cambie la URL remota para que tenga el nombre de usuario correcto:

 git remote set-url origin \ ec2-user@ec2-54-89-205-210.compute-1.amazonaws.com:/root/testGitRoot 

Este post de error significa que no se pudo autenticar.

Estas son razones comunes que pueden causar eso:

  • Intentando conectar con la key incorrecta. ¿Estás seguro de que esta instancia está usando este par de llaves?
  • Intentando conectar con el nombre de usuario incorrecto. ubuntu es el nombre de usuario para la distribución AWS basada en Ubuntu, pero en algunos otros es ec2-user (o admin en algunos Debians)
  • Intentando conectar el host equivocado. ¿Es ese el host correcto al que intenta ingresar?

Tenga en count que 1. también ocurrirá si ha estropeado el file / /home/<username>/.ssh/authorized_keys . /home/<username>/.ssh/authorized_keys en su instancia de EC2.

Aproximadamente 2., la información sobre qué nombre de usuario debe usar a menudo falta en la descripción de AMI Image. Pero puede encontrar algunos en la documentation de AWS EC2.

Punto de viñeta 4.: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html