2011-01-28 42 views
72

Esto parece ser un problema común, pero mi caso específico parece un poco diferente.Amazon EC2 Permiso denegado (publickey)

Configuré una nueva instancia de Amazon EC2 usando las herramientas de línea de comandos y me conecté a través de SSH e hice algunos trabajos de configuración.

Inicialmente, sin embargo, no pude entrar sigilosamente a la instancia, tuve que detener y reiniciar la instancia, entonces pude conectarme. Antes de reiniciar, recibí la respuesta.

Permission denied (publickey). 

Eso fue anoche, esta mañana me vuelvo a la misma instancia y ahora todo lo que consigo es

Permission denied (publickey). 

He intentado reiniciar la instancia sin alegría.

¿Puede alguien señalarme en la dirección correcta aquí? El mismo comando que funcionó anoche ya no funciona, me estoy conectando desde mi Macbook Pro.

Respuesta

75

Voy a responder a mi propia pregunta, en caso de que alguien más ve lo mismo ... La noche anterior lo había hecho:

ssh-add ~/.ssh/[keypair name] 

entonces estado conectando con:

ssh [email protected][ec2 instance ip] 

Este Mañana probé lo mismo y no pude conectarme. Pero hacer

ssh -i ~/.ssh/[keypair name] [email protected][ec2 instance ip] 

me entra.

Usando ssh-add en el par de claves nuevo me molesta. Me supongo ssh-add sólo funciona dentro de la cáscara que había emitido en. Cuando cerré el terminal ventana y abrí otra. Ya no tenía ese par de llaves disponible sin ser explícito.

+8

gracias, se olvidó de usar la parte "ec2-user" y el mensaje de error devuelto no fue muy informativo sobre ese error – pulkitsinghal

+20

Si es una instancia de Ubuntu, use ssh -i ~/.ssh/[nombre del par clave] ** ubuntu ** @ [instancia del ec2 ip] –

+0

Elastic Map Reduce cluster -> hadoop @ [ec2 instance ip] – craastad

14

Me encontré con un problema similar y resultó ser permisos en la carpeta de inicio. Afortunadamente todavía tenía otra conexión existente ssh abierto, así que era capaz de comprobar el registro en la instancia EC2:

$ sudo menos/var/log/secure

que contenía:

Dec 9 05:58:20 ... sshd[29816]: Authentication refused: 
    bad ownership or modes for directory /home/ec2-user 

Este se fija mediante la emisión de la orden:

$ chmod og-rwx/home/usuario EC2-

Espero que esto ayude a alguien más.

+1

Totalmente guardado mi tocino, gracias. – gazarsgo

+0

Mina, también ... vieja respuesta, pero solución válida. ¡Gracias hombre! –

+0

¿Qué puede hacer si aún no tiene una conexión abierta? – Nate

12

Tenga en cuenta que después de reiniciar la instancia, el nombre dns cambió. Me enamoré de esto varias veces. El archivo de claves todavía era válido, pero el "nombre de servidor" cambió.

+1

Gracias por esta pista. Ese fue mi problema, también. – asmaier

1

Asegúrate de que la ruta a tu clave privada sea la correcta.

Si su cliente ssh no puede encontrar la clave privada que está tratando de proporcionar, ¡aunque parezca extraño, no le dará error! simplemente no usará esa clave. Utilizará cualquier clave que tenga bajo .ssh/id_dsa y .ssh/id_ecdsa que, por supuesto, debilitará la autenticación de clave pública.

28

Esto me estaba pasando porque no estaba usando el nombre de usuario correcto. Pude iniciar sesión cuando uso un AMI utilizado en un tutorial que estaba siguiendo, pero cuando traté de usar un AMI diferente (ubuntu + LAMP de Bitnami) obtenía el error Permission denied (public key).. Finalmente me di cuenta de que si cambiaba el nombre de usuario del tutorial ami de ubuntu a ec2-user, obtendría el mismo error.

Así que un rápido google dice que el nombre de usuario de las AMI de Bitnami es bitnami. Problema resuelto.

+0

HORAS de reinstalación de la instancia, cambio de pares clave-valor, etc., etc., ¡este es su nombre de usuario! Gracias :) –

+3

Gracias por el consejo. En mi caso fue todo lo contrario, necesitaba usar 'ubuntu' como nombre de usuario. – STW

+0

No funciona para mí. Usando un AMI de Bitnami, dicen que bitnami es el nombre de usuario, que usa el .pem derecho, que se inició en un nuevo shell y nada.Extremadamente frustrante, este es el día 2 de ningún progreso. –

3

Gracias!

Realmente aprecio la respuesta de Trevor aquí. Voy a agregar este pequeño truco que ahora uso para evitar este problema en el futuro.

conveniencia

Debido a que usted tiene que crear un par de claves diferentes para cada zona de disponibilidad, se convierte en una molestia para gestionar todos ellos y los comandos que los utilizan. Con la configuración adecuada en ~/.ssh/config mi comando ssh es tan simple como:

ssh ec2-52-10-20-30.us-west-2.compute.amazonaws.com 

Ese es el DNS público lleno de un servidor en la zona de disponibilidad US West 2. El nombre de usuario y la clave apropiados se seleccionan debido a esto:

## ~/.ssh/config 

Host *.us-west-2.compute.amazonaws.com 
    User ec2-user 
    IdentityFile ~/.ssh/bruno-bronosky-aws-us-west-2.pem 
0

Pasé todo el día buscando en Internet la respuesta. Mi problema es exactamente el mismo. Jugueteé con el tema del permiso, cambié de un lado a otro, pero ninguno resolvió mi problema. Después de probar con una nueva clave y comenzar/terminar un par de instancias, finalmente encontré que tiene que ver con el mismo nombre de clave en diferentes regiones.

Esta es la forma "Permiso denegado (publickey)" pasó a mí:
1. Siga el libro de práctica, seleccione los EE.UU.-este-1 como zona predeterminada
2. Crear un nombre clave "MyKey"
3. Explorando el mundo AWS siguiendo los ejemplos en ese libro.
4. Un día, intente probar las velocidades de la zona de Sydney, cambie a Sydney Zone como predeterminado.
5. Crea otra clave, llámala "mykey" sin pensar, pero no la uses para conectarte a través de cli durante un par de días.
6. Intente conectarse a AWS utilizando cli.
7. Obtenido "Permiso denegado (clave pública)".
8. Pasé muchas horas para solucionar el problema de ssh hasta que noté el problema de la tecla/zona.

Espero que esto ayude a los novatos como yo.

Para evitar este problema, creo que la mejor práctica para nombrar una clave es adjuntar una región.

+0

Esto no proporciona una respuesta a la pregunta. Una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/whats-reputation) podrá [comentar cualquier publicación] (http://stackoverflow.com/help/privileges/comment); en su lugar, [brinde respuestas que no requieran aclaración del autor de la pregunta] (http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-instead). -. [crítica] (/ revisión/de baja calidad postes/14040061) – HimBromBeere

+0

que fijan zona predeterminada para este-1, y yo creamos una clave denominada "MyKey", después me cambié a la zona de Sydney, y crear otro clave llamada "mykey" también. Entonces cuando yo – FrankCJ

+0

¡Esto funcionó gracias! La clave que obtuve fue una clave que había usado mientras estaba conectado a una región diferente. –

0

También he recibido: Permiso denegado.

utilicé:

ssh -v -i ~/.ssh/pemfile [email protected] 

y la respuesta fue:

debug1: No more authentication methods to try. 

Entre el mandato:

ssh-add -l 

pero la respuesta fue vacío

Por lo tanto, creo el archivo de la pluma tiene tan mething mal sobre el formato. A continuación, encontré el archivo de lápiz descargado de ec2 web y lo moví de nuevo. Antes de esto, he creado un nuevo archivo y analiza sintácticamente el texto del archivo pem descargado en el directorio "ssh", entonces:

ssh-add filename 

cual fue un éxito.

+0

¿Es esta una respuesta/solución? No está del todo claro, por lo que leí, si fue realmente exitoso o no. Voy a proponer un [edit], basado en lo que creo que quisiste decir, pero por favor hazlo si no es preciso. – gravity

1

Si la instancia de EC2 usa Ubuntu ami 14.04. Intente agregar 'ubuntu @' antes de la instancia de IP ip.

ssh -i [key name] [email protected][EC2 instance ip] 
0

Cambié los permisos a 600, aunque los permisos en el archivo de pem ya eran 644. Y funcionó: p espero que ayude