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 ingresar a SSH.
Cuando traté de ssh con:
ssh -i myfile.pem <public dns>
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).
Después de esta publicación , intenté chmod +600 el archivo pem, pero ahora cuando ssh solo obtengo:
Permission denied (publickey).
¿Qué error de escolar estoy cometiendo 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
amazon-web-services
authentication
ssh
amazon-ec2
permissions
Matt Roberts
fuente
fuente
chmod 400 myfile.pem
usosmyfile.ppk
generados por PuTTYgen a partir del archivo pem.Respuestas:
El problema es tener un mod incorrecto en el archivo.
Resuelto fácilmente ejecutando -
chmod 400 mykey.pem
Tomado de las instrucciones de Amazon:
400 lo protege haciéndolo de solo lectura y solo para el propietario.
fuente
ssh -i YOUR_PEM_FILE.pem ec2-user@YOUR_IP
solucionó el problema. Quizás esta debería ser la respuesta aceptada ...Es probable que esté utilizando un nombre de usuario incorrecto para iniciar sesión:
ubuntu
ec2-user
root
oadmin
Para iniciar sesión, debe ajustar su comando ssh:
HTH
fuente
Permission denied (publickey).
y nada más ...chmod 500 <path_to_pem_file>
debería hacerlo.Sé que es muy tarde para el juego ... pero esto siempre funciona para mí:
paso 1
paso 2, simplemente ssh en :)
p.ej
Espero que esto ayude a alguien.
fuente
ssh-agent -s
informa SSH_AGENT_PID = 3409; ssh-add da el mismo error que el anterior ......... Cualquier ayuda aquí por favorOk hombre, lo único que funcionó para mí fue:
Cambiar los permisos de la clave
Asegúrese de iniciar sesión con ec2-user y la dirección correcta ec2-99 ... La dirección ec2-99 se encuentra en la parte inferior de la consola de aws cuando inicia sesión y ve su instancia en la lista
fuente
Echa un vistazo a este artículo . No utiliza el DNS público sino el formulario.
donde el nombre es visible en su panel AMI
fuente
Cambiar el permiso para el archivo de clave con:
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
fuente
En Windows, puede ir a las propiedades del archivo pem, ir a la pestaña de seguridad y luego avanzar al botón.
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.
fuente
Sé que esta pregunta ya ha sido respondida, pero para aquellos que los han probado todos y todavía están recibiendo el molesto "Permiso denegado (clave pública)". 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 asumió)
sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com
Una vez que haga esto, recibirá 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 lo glorioso:
fuente
En la terminal Mac, hacer "chmod 400 xyz.pem" no me ayudó, seguía diciendo que el permiso había sido denegado. Para usuarios de ubuntu sugeriría
ssh-add xyz.pem
ssh -i xyz.pem [email protected]
(observe que el usuario es ubuntu)fuente
Las mejores prácticas de claves SSH y permisos de archivos:
clave pública / archivo .pub - 0600 (lectura y escritura solo por el propietario)
chmod XXXX file/directory
fuente
ssh -i /.pem usuario @ host-machine-IP
Creo que se debe a que ha ingresado credenciales incorrectas o está utilizando una clave pública en lugar de una clave privada o sus permisos de puerto están abiertos para que TODOS los usen. Esto es malo para Amazon.
fuente
Inicio de sesión alternativo con PuTTY. Es bueno pero necesita unos pocos pasos.
Estoy usando PuTTY 0.66 en Windows.
fuente
Además de las otras respuestas, esto es lo que hice para que esto funcione:
cp key.pem ~/.ssh/key.pem
chmod 400 ~/.ssh/key.pem
eval `ssh-agent -s` ssh-add
ssh-add ~/.ssh/key.pem
Ahora debería poder ssh EC2 (:
fuente
Haga un chmod 400 yourkeyfile.pem Si su instancia es Amazon linux, use ssh -i yourkeyfile.pem ec2-user @ ip para ubuntu ssh -i yourkeyfile.pem ubuntu @ ip para centos ssh -i yourkeyfile.pem centos @ ip
fuente
Puede haber tres razones detrás de este error.
fuente
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 requeridos ejecutando:
chmod 400 my_file.pem
Y funcionó.
fuente
Bueno, mirando la descripción de tu publicación, siento que hay 2 errores cometidos por ti:
Establezca los permisos correctos para la clave privada . El siguiente comando debería ayudarlo a configurar el permiso de archivo correcto.
chmod 0600 mykey.pem
Usuario ec2 incorrecto que está intentando iniciar sesión .
Mirando su registro de depuración, creo que ha generado una instancia de Amazon Linux. El usuario predeterminado para ese tipo de instancia es
ec2-user
. Si la instancia hubiera sido ubuntu, entonces su usuario predeterminado habría sidoubuntu
.ssh -i privatekey.pem default_ssh_user@server_ip
fuente: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
fuente
Lista de Verificación:
¿Está utilizando el archivo .pem de clave privada correcto?
¿Sus permisos están configurados correctamente? (Las AMI de mi marca Amazon funcionan con 644, pero Red hat debe tener al menos 600 o 400. No sé sobre Ubuntu).
¿Está utilizando el nombre de usuario correcto en su 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 username -i pem hostname"
fuente
Simplemente cambie el permiso del archivo pem a 0600 permitiendo solo para el usuario permitido y funcionará de maravilla.
Y luego intente ssh funcionará perfectamente.
fuente
Por permiso predeterminado no se permite la clave pem. Solo tienes que cambiar el permiso:
chmod 400 xyz.pem
y si la instancia de ubuntu se conecta usando:
ssh -i xyz.pem [email protected]
fuente
El archivo de clave no debe ser visible públicamente, así que use el permiso 400
Si el comando anterior muestra un error de permiso, use
Ahora ssh en la máquina ec2, si aún enfrenta el problema, use ec2-user
ssh -i keyfile.pem [email protected]
fuente
.400 lo protege haciéndolo de solo lectura y solo para el propietario.
Puede encontrar la respuesta en la guía ASW.
fuente
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.
Paso 2: cambiar el permiso
Paso 3: ejecuta el siguiente comando
Como este comando es demasiado largo, debería crear el alias usando los siguientes comandos:
Escriba el mismo comando de la siguiente manera al final.
Ahora reinicie su sistema y úselo
sshConnect
para conectarse con su servidor.fuente
Es solo un problema de permiso con su clave aws pem.
Simplemente cambie el permiso de pem key a 400 usando el siguiente comando.
Si no tiene permiso para cambiar el permiso de un archivo, puede usar sudo como el siguiente comando.
Espero que esto funcione bien.
fuente
He visto dos razones detrás de este problema.
1) la clave de acceso no tiene el permiso correcto. Las teclas pem con permiso predeterminado no pueden establecer una conexión segura. Solo tienes que cambiar el permiso:
chmod 400 xyz.pem
2) Compruebe 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}
fuente
Su clave no debe ser públicamente visible para que SSH funcione. Use este comando si es necesario:
Ejemplo:
fuente
Ignore esta respuesta si es irrelevante para usted, pero según mi experiencia, he visto personas con problemas
Permission denied (publickey)
porque simplemente pegaron su clave pública (en una máquina de destino) sin la primera letra .Esto sucede cuando se usa vim para editar (pegar) la clave. Dado que vim se abre por defecto en el modo de comando (no en un modo de inserción ), pegar la tecla sin cambiar a un modo de inserción (es decir
i
) dará como resultado omitir la primeras
letra, por ejemplo, en lugar determinas pegando
¡Así que antes de probar otras soluciones, vea si ha pegado la clave correctamente ! es decir
Solo si está seguro, realice los siguientes pasos; intentar ssh en un modo detallado (es decir, una bandera
-v
) podría indicarle el problema real:Como nota al margen, como ya se ha mencionado aquí por otros, en la mayoría de los casos, iniciar un agente ssh vacío (programa que mantiene sus claves en la memoria) y agregar su clave debería resolver el problema:
fuente
Lo que solucionó esto para mí fue mover el archivo .pem dentro del directorio de aplicaciones. Soo dice que fooapp es el nombre de mi aplicación. Lo puse directamente allí.
fuente
A veces puede haber un error en la carpeta. No se por que...
Puede cambiar la carpeta e intentar nuevamente. Por ejemplo, puede experimentar en las carpetas habituales (Escritorio, Descargas, etc.).
Probé este método y trabajé
fuente
Este error es solo por permiso.
Solo dame el permiso 400
#chmod 400 pemfilepath
fuente