Clave SSH: "Los permisos 0644 para 'id_rsa.pub' están demasiado abiertos". en mac

261

Genero un par de claves ssh en mi mac y agrego la clave pública a mi servidor ubuntu (de hecho, es una máquina virtual en mi mac), pero cuando intento iniciar sesión en el servidor ubuntu, dice:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Permission denied (publickey,password).

He intentado muchas formas de resolver esto, cambiar el modo de archivo de clave, cambiar el modo de carpeta, como algunos responden en stackoverflow, pero no funciona.
el permiso de archivo de clave:

vm dir:
drwxr-xr-x   4 tudouya  staff    136  4 29 10:37 vm

key file:
-rw-------  1 tudouya  staff  1679  4 29 10:30 vm_id_rsa
-rw-r--r--  1 tudouya  staff   391  4 29 10:30 vm_id_rsa.pub

por favor dame una idea ... =========================================

I escriba la información del host en ssh_config:

Host ubuntuvm
    Hostname 10.211.55.17
    PreferredAuthentications publickey
    IdentityFile /Users/tudouya/.ssh/vm/vm_id_rsa.pub

Ejecuto el comando "ssh -v ubuntuvm", muestra:

ssh -v ubuntuvm
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 103: Applying options for *
debug1: /etc/ssh_config line 175: Applying options for ubuntuvm
debug1: Connecting to 10.211.55.17 [10.211.55.17] port 22.
debug1: Connection established.
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-8
debug1: match: OpenSSH_6.6.1p1 Ubuntu-8 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 55:6d:4f:0f:23:51:ac:8e:70:01:ec:0e:62:9e:1c:10
debug1: Host '10.211.55.17' is known and matches the RSA host key.
debug1: Found key in /Users/tudouya/.ssh/known_hosts:54
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: Server accepts key: pkalg ssh-rsa blen 279
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: No more authentication methods to try.
Permission denied (publickey,password).
土豆 丫
fuente
1
¿Podría editar su pregunta para incluir el comando ssh específico que está ejecutando? Si el archivo de clave en cuestión se especifica en el archivo de configuración ssh, incluya también las líneas relevantes del archivo de configuración.
Kenster
Para mí fue "malos permisos"
insign
Me enfrento a este problema cuando agrego -i id_rsa.pubel comando ssh para la conexión. Parece que exigir el uso de alguna clave pública en la fuerza del comando ssh para solicitar una contraseña (incluso cuando la frase de contraseña estaba vacía, al menos en mi caso)
Diego Andrés Díaz Espinoza

Respuestas:

148
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1

Parece que estás intentando usar el archivo de clave incorrecto. El archivo con la extensión ".pub" es el archivo de clave pública . El archivo correspondiente sin la extensión ".pub" es el archivo de clave privada . Cuando ejecuta un cliente ssh para conectarse a un servidor remoto, debe proporcionar el archivo de clave privada al cliente ssh.

Probablemente tenga una línea en su .ssh/configarchivo (o /etc/ssh_config) que se vea así:

IdentityFile .../.ssh/vm/vm_id_rsa.pub

Debe eliminar la extensión ".pub" del nombre del archivo:

IdentityFile .../.ssh/vm/vm_id_rsa
Kenster
fuente
Estaba teniendo este problema con SQLPro y había seleccionado incorrectamente el .pubarchivo public ( ) en lugar del archivo privado.
Henry
1
Recibí este error cuando lo hice ssh -i id_ed25519.pubmientras hacía ssh -i id_ed25519trabajos
Boris el
2
Gracias me salvó aquí.
Abner
¡Brillante! ¡Gracias!
Alliswell
576

Te sugiero que hagas:

chmod 400 ~ / .ssh / id_rsa

Para mí el trabajo está bien.

Rick Benetti
fuente
33
“Permissions 0644 for 'id_rsa.pub' are too open."y la clave fue por lo tanto ignorada. Esto probablemente se debió a que copié el archivo de clave, desde mi otra PC. Pero la fijación de permisos solucionó el problema. ¡Gracias!
parasrish
2
@ xoxn - 1'w3k4n ¿Por qué es esto tan malo? Tiene sentido si las personas copiaron o administraron mal su acceso de lectura y escritura a estos archivos confidenciales, que deberían repararse.
Gerard
55
Esto no es cinta adhesiva. Si copió sobre sus identificadores, esto tiene sentido.
ALisboa
¡Funcionó para mí como una solución al copiar claves ssh de una computadora vieja!
Nick
1
También funciona en WSL
h-rai
59

La clave debe ser legible por el usuario conectado.

Prueba esto:

chmod 400 ~/.ssh/Key file
chmod 400 ~/.ssh/vm_id_rsa.pub
usuario3029620
fuente
Con la clave pública 400 o 600 obtengo un formato inválidossh-add ~/.ssh/id_rsa.pub
rhand
53
chmod 400 path/to/filename

Este trabajo para mi. Cuando hice este archivo, puedo conectarme a mi instancia EC2

Muhammad Wajahat Anwar
fuente
Es un placer :) Gracias
Muhammad Wajahat Anwar
2
Esta es la respuesta
Mladen Danic
23

Después de ejecutar el siguiente comando, me funciona

sudo chmod 600 /path/to/my/key.pem
Ashok
fuente
20

En mi caso, era un archivo .pem. Resulta que también vale para eso. Cambió los permisos del archivo y funcionó.

chmod 400 ~/.ssh/dev-shared.pem

Gracias por todos los que ayudaron arriba.

Vaibhav Tripathi
fuente
13

Si las claves están en el directorio ~ / .ssh, use

chmod 400 ~ / .ssh / id_rsa

Si las claves están en un directorio diferente, use

chmod 400 ruta_directorio / id_rsa

Esto funcionó para mí.

Anirban
fuente
2
¿Cómo mejora esto las otras respuestas?
Nico Haase
2
no es la clave del pub la que debe protegerse, es la privada
Picarus
La clave privada tiene que ser protegida.
bashan
Esto funciona para mi. Creo que chmod 400 ~/.ssh/id_rsaesto es lo que quisiste decir @Anirban. Como se indicó anteriormente: El archivo con la extensión ".pub" es el archivo de clave pública. El archivo correspondiente sin la extensión ".pub" es el archivo de clave privada. Necesitamos proteger uno privado.
naveenKumar
Editó la respuesta. Debería ser la clave privada.
Anirban
12

Muchas respuestas similares pero sin explicaciones ...

El error se produce porque los permisos del archivo de clave privada son demasiado abiertos. Es un riesgo de seguridad.

Cambie los permisos en el archivo de clave privada para que sean mínimos (solo lectura del propietario)

  1. Cambio de propietario chown <unix-name> <private-key-file>
  2. Establecer permisos mínimos (solo lectura para el propietario del archivo) chmod 400 <private-key-file>
James Wierzba
fuente
7

En cuanto a mí, el modo predeterminado de id_rsaes 600, que significa readableywritable .

Después de insertar este archivo en un repositorio git y extraerlo de otra PC, a veces el modo del archivo de clave privada se convierte -rw-r--r-- .

Cuando extraigo el repositorio con ssh después de especificar el archivo de clave privada, falló y provocó las mismas advertencias. El siguiente es mi guión.

ssh-agent bash -c "ssh-add $PATH_OF_RSA/id_rsa; \
git pull [email protected]:someone/somerepo.git "

Arreglo este problema simplemente cambiando el modo a 600.

chmod 600 $PATH_TO_RSA/id_rsa
W.Perrin
fuente
6

dar el permiso 400 hace que la clave sea privada y no sea accesible por alguien desconocido. Hace que la clave sea protegida.

chmod 400 /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Himanshi Singh
fuente
2

chmod 400 /etc/ssh/* funciona para mi.

Michal Šípek
fuente
3
Puede hacerlo siempre y cuando se dé cuenta de que está afectando a todas las claves del directorio.
J2N
2

Si está utilizando un archivo .ssh / config intente

chmod 0400 .ssh/config

luego:

chmod 0400 .ssh/<<KEYFILE_PATH>>
Shell_Leko
fuente
2

Aquellos que sugirieron chmod 400 id_rsa.pub no sonaron bien en absoluto. Era bastante posible que op usara la clave de pub en lugar de la clave privada para ssh.

Entonces podría ser tan simple como ssh -i /Users/tudouya/.ssh/vm/vm_id_rsa (the private key) user@host solucionarlo.

--- actualización ---

Consulte este artículo https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2 para saber cómo configurar la clave ssh

Qiulang
fuente
Podría ser, aunque en mi caso cuando busqué este problema y obtuve la respuesta, el chmod 400 era lo que necesitaba para resolver mi problema. ¡Gracias a todos los que ayudaron!
J2N
1

Solo corre abajo a tu pem's

sudo chmod 600 /path/to/my/key.pem 
Pravin
fuente
-8

Quité el .pub file, y funcionó.

usuario2942483
fuente
1
No es necesario eliminar el archivo .pub. También significará que no tiene un registro de la clave pública en su máquina para su uso posterior.
Henry
1
Si tiene OpenSSH, puede volver a generar el archivo de clave pública que falta desde la clave privada mediante ssh-keygen -i -f /path/to/private.key > /desired/path/to/public.key. Entonces, no está realmente perdido. :)
dannysauer