Intentando SSH en una instancia de Amazon Ec2 – error de permiso

Esta es probablemente una pregunta estúpidamente simple para algunos 🙂

Creé una nueva instancia de Linux en Amazon EC2, y como parte de eso descargué el archivo .pem para permitirme SSH en.

Cuando intenté hacer ssh con:

ssh -i myfile.pem  

Tengo:

 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for 'amazonec2.pem' are too open. It is recommended that your private key files are NOT accessible by others. This private key will be ignored. bad permissions: ignore key: amazonec2.pem Permission denied (publickey). 

Siguiendo esta publicación intenté chmod +600 el archivo pem, pero ahora cuando ssh obtengo:

 Permission denied (publickey). 

¿Qué error de colegial estoy haciendo aquí? El archivo .pem está en mi carpeta de inicio (en osx). Sus permisos se ven así:

 -rw-------@ 1 mattroberts staff 1696 19 Nov 11:20 amazonec2.pem 

El problema es tener una modificación incorrecta en el archivo.

Fácilmente resuelto ejecutando –

chmod 400 mykey.pem

Tomado de las instrucciones de Amazon –

Su archivo de clave no debe ser visible públicamente para que SSH funcione. Use este comando si es necesario: chmod 400 mykey.pem

Probablemente estés usando el nombre de usuario incorrecto para iniciar sesión:

  • la mayoría de las imágenes de Ubuntu tienen un usuario ubuntu
  • AMI de Amazon es ec2-user
  • la mayoría de las imágenes de Debian tienen root o admin

Para iniciar sesión, debe ajustar su comando ssh:

 ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-host 

HTH

Sé que esto es muy tarde para el juego … pero esto siempre me funciona:

paso 1

 ssh-add ~/.ssh/KEY_PAIR_NAME.pem 

paso 2, simplemente ssh in 🙂

 ssh user_name@ 

p.ej

 ssh ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com 

Espero que esto ayude a alguien.

Ok hombre, lo único que funcionó para mí fue:

  1. Cambiar permisos de la clave

    chmod 400 mykey.pem

  2. Asegúrese de iniciar sesión con el usuario ec2 y la dirección ec2-99 … correcta. La dirección ec2-99 se encuentra en la parte inferior de la consola de Aws cuando inicia sesión y ve su instancia listada

    ssh -i mykey.pem ec2-user@ec2-99-99-99-99.compute-1.amazonaws.com

Eche un vistazo a este artículo . No usas el DNS público sino el formulario

 ssh -i your.pem root@ec2-XXX-XXX-XXX-XXX.z-2.compute-1.amazonaws.com 

donde el nombre es visible en su panel AMI

Cambie el permiso para el archivo de clave con:

 chmod 400 key-file-name.pem 

Consulte la documentación de AWS para conectarse a la instancia:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux

En la terminal Mac, hacer “chmod 400 xyz.pem” no me ayudó, seguía diciendo que se negaba el permiso. Para los usuarios de ubuntu sugeriría

  1. ssh-add xyz.pem
  2. ssh -i xyz.pem ubuntu@ec2-54-69-172-118.us-west-2.compute.amazonaws.com (observe que el usuario es ubuntu)

Sé que ya se ha respondido esta pregunta, pero para aquellos que los han probado todos y aún recibes el molesto “Permiso denegado (publickey)”. Intenta ejecutar tu comando con SUDO. Por supuesto, esta es una solución temporal y debe establecer los permisos correctamente, pero al menos eso le permitirá identificar que su usuario actual no se está ejecutando con los privilegios que necesita (como suponía)

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com

Una vez que hagas esto, recibirás un mensaje como este:

Please login as the user "ec2-user" rather than the user "root"

Que también está escasamente documentado. En ese caso solo haz esto:

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user

Y obtendrás el glorioso:

  __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| 

Claves de SSH y mejores prácticas de permisos de archivos:

  • .ssh directory – 0700 (solo por el propietario)
  • archivo de clave privada / .pem – 0400 (solo leído por el propietario)
  • archivo de clave pública / .pub – 0600 (solo lectura y escritura por el propietario)

    chmod XXXX file/directory

ssh -i /.pem usuario @ host-máquina-IP

Creo que es porque has ingresado credenciales incorrectas o estás usando una clave pública en lugar de una clave privada o tus permisos de puerto están abiertos para que ALL sea ssh. Esto es malo para Amazon.

Inicio de sesión alternativo utilizando PuTTY. Es bueno, pero necesita algunos pasos.

  1. Obtenga su .pem que se generó cuando creó por primera vez la instancia de EC2.
  2. Convierta el archivo .pem .ppk usando PuttyGen ya que PuTTY no lee .pem.
  3. Abra PuTTY e ingrese su nombre de host, que es el nombre de usuario de su instancia + DNS público (por ejemplo, ubuntu@ec2-xxx-xxx-xxx-xxx.region.compute.amazonaws.com). No es su nombre de usuario de cuenta de AWS.
  4. Luego, vaya a Conexión> SSH> Auth . A continuación, agregue su archivo .ppk . Haga clic en Buscar donde dice “Archivo de clave privada para autenticación” .
  5. Haga clic en Abrir y podrá establecer de inmediato la conexión.

Estoy usando PuTTY 0.66 en Windows.

Haga un chmod 400 yourkeyfile.pem Si su instancia es Amazon linux, utilice ssh -i yourkeyfile.pem ec2-user @ ip para ubuntu ssh -i yourkeyfile.pem ubuntu @ ip para centos ssh -i yourkeyfile.pem centos @ ip

Puede haber tres razones detrás de este error.

  1. Estás usando una clave incorrecta.
  2. Tu clave no tiene los permisos correctos. Debes cambiarlo a 400.
  3. Estás usando el usuario equivocado. Las imágenes de Ubuntu tienen un usuario ubuntu , AMI de Amazon es usuario ec2 y las imágenes de Debian tienen raíz o administrador

El problema para mí fue que mi archivo .pem estaba en una de mis particiones NTFS. Lo moví a mi partición de Linux (ext4).

Dio los permisos necesarios ejecutando:

chmod 400 my_file.pem

Y funcionó.

Lista de verificación:

  1. ¿Estás usando el archivo .pem de clave privada correcta?

  2. ¿Son sus permisos establecidos correctamente? (Mis AMI de la marca Amazon funcionan con 644, pero Red hat debe ser de al menos 600 o 400. No sé sobre Ubuntu).

  3. ¿Estás usando el nombre de usuario correcto en tu línea ssh? Amazon-branded = “ec2-user”, Red Hat = “root”, Ubuntu = “ubuntu”. El usuario se puede especificar como “ssh -i pem usename @ hostname” O “ssh -l nombre de usuario -i pem nombre de host”

Simplemente cambie el permiso del archivo pem a 0600 permitiendo solo al usuario permitido y funcionará como un hechizo.

 sudo chmod 0600 myfile.pem 

Y luego intente ssh, funcionará perfectamente.

 ssh -i myfile.pem <>@<> 

De forma predeterminada, el permiso no permite la tecla pem. Solo tienes que cambiar el permiso:

chmod 400 xyz.pem

y si la instancia de Ubuntu se conecta usando:

ssh -i xyz.pem ubuntu@ec2-youraws.amazonaws.com

Además de las otras respuestas, esto es lo que hice para que esto funcione:

  • Copia la clave a la carpeta .ssh si aún no lo has hecho:

cp key.pem ~/.ssh/key.pem

  • Da los permisos adecuados a la clave

chmod 400 ~/.ssh/key.pem

eval `ssh-agent -s` ssh-add

  • Luego, agrega la llave

ssh-add ~/.ssh/key.pem

Ahora debería poder ssh EC2 (:

El archivo clave no debe ser visible públicamente, así que use el permiso 400

 chmod 400 keyfile.pem 

Si el comando anterior muestra el uso de un permiso de error

 sudo chmod 400 keyfile.pem 

Ahora ssh en la máquina ec2, si aún enfrenta el problema, use ec2-user

ssh -i keyfile.pem ec2-user@ec2-12-34-56-78.compute-1.amazonaws.com

En Windows, puede ir a las propiedades del archivo pem, ir a la pestaña de seguridad y luego al botón Avanzar.

eliminar la herencia y todos los permisos. entonces concédete el control total. después de todo SSL no le dará el mismo error nuevamente.

Lo que solucionó esto fue mover el archivo .pem dentro del directorio de aplicaciones. Así que decir fooapp es el nombre de mi aplicación. Lo puse directamente allí.

Los siguientes son los pasos simples para que el usuario de Linux se conecte con el servidor usando el archivo .pem:

Paso 1: a la ubicación del archivo pem y cópielo a la ubicación de inicio .ssh.

 cp example.pem ~/.ssh/example.pem 

Paso 2: cambiar el permiso

 chmod 400 ~/.ssh/example.pem 

Paso 3: ejecuta el siguiente comando

 ssh -i ~/.ssh/example.pem ec2-user@host.com 

Como este comando es demasiado largo, debe crear el alias utilizando los siguientes comandos:

  vim ~/.bashrc 

Escriba el mismo comando de la siguiente manera en el último.

 alias sshConnect='ssh -i ~/.ssh/example.pem ec2-user@host.com' 

Ahora reinicie su sistema y use sshConnect para conectarse con su servidor.

Es solo un problema de permiso con su clave de pews aws.

Simplemente cambie el permiso de la clave pem a 400 usando el comando debajo.

 chmod 400 pemkeyname.pem 

Si no tiene permiso para cambiar el permiso de un archivo, puede usar sudo como se indica a continuación.

 sudo chmod 400 pemkeyname.pem 

Espero que esto funcione bien.

He visto dos razones detrás de este problema

1) la clave de acceso no tiene el permiso correcto. Las llaves de pem con permiso predeterminado no están permitidas para hacer una conexión segura. Solo tienes que cambiar el permiso:

chmod 400 xyz.pem

2) Verifique también si ha iniciado sesión con las credenciales de usuario adecuadas. De lo contrario, use sudo mientras se conecta

sudo ssh -i {keyfile} ec2-user @ {dirección ip del host remoto}

Bueno, al mirar la descripción de tu publicación, siento que cometiste 2 errores:

  1. Establezca los permisos correctos para la clave privada . El siguiente comando debería ayudarlo a establecer el permiso correcto para el archivo.

    chmod 0600 mykey.pem

  2. Usuario de ec2 incorrecto al que está intentando iniciar sesión .

    Al mirar tu registro de depuración, creo que has generado una instancia de Amazon linux. El usuario predeterminado para ese tipo de instancia es ec2-user . Si la instancia hubiera sido ubuntu, entonces tu usuario predeterminado habría sido ubuntu .

    ssh -i privatekey.pem default_ssh_user@server_ip

 Note: For an Amazon Linux AMI, the default user name is ec2-user. For a Centos AMI, the default user name is centos. For a Debian AMI, the default user name is admin or root. For a Fedora AMI, the default user name is ec2-user or fedora. For a RHEL AMI, the default user name is ec2-user or root. For a SUSE AMI, the default user name is ec2-user or root. For an Ubuntu AMI, the default user name is ubuntu. Otherwise, if ec2-user and root don't work, check with the AMI provider. 

fuente: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

Este error es solo por permiso.

Solo da el permiso 600

#chmod 600 pemfilepath