Pregunta Permisos de la clave privada en la carpeta .ssh?


Cambié mis permisos en mi .ssh carpeta y ahora cuando uso un software que usa mi clave privada, debo escribir mi contraseña cada vez. ¿Cuáles deberían ser mis permisos en mi id_rsa archivo para no tener que escribir una contraseña cada vez que uso una aplicación que lo usa?

Actualmente mis permisos están configurados para:

-rw-------@ 1 Jody  staff   114 Nov  4 23:29 config
-rw-------  1 Jody  staff  1743 Oct 21  2009 id_rsa
-rw-------@ 1 Jody  staff   397 Oct 21  2009 id_rsa.pub 
-rw-------@ 1 Jody  staff  3855 Sep 13 22:35 known_hosts

276


origen




Respuestas:


Típicamente quieres el .ssh permisos de directorio para ser 700 (drwx------) y la clave pública (.pub archivo) para ser 644 (-rw-r--r--). Tu clave privada (id_rsa) debiera ser 600 (-rw-------). Por último, su directorio de inicio no debe ser editable por el grupo u otros (como máximo 755 (drwxr-xr-x))

Supongo que quiere decir que debe ingresar la contraseña de su sistema / usuario cada vez, y que anteriormente no tenía que hacerlo. La respuesta de cdhowie es asumir que estableces una contraseña / frase de contraseña al generar tus claves, y si lo hiciste, como él dice, tendrás que ingresar tu contraseña cada vez, a menos que uses un agente ssh.


480



En otro lugar encontré que si usaba el archivo authorized_keys, debería ser modificado a 640, es decir, -rw-r -----. - AnneTheAgile
¿Dónde puedo encontrar esta información en las páginas man? - Sonique
He vuelto a esta publicación unas 30 veces. No puedo creer que no puedo recordarlo. - JREAM
Las únicas cosas importantes son que nada en .ssh puede escribirse a nadie y ninguna de las claves secretas puede leerse para nadie más. - Markus Kuhn
El permiso de ejecución de @Cerin en un directorio concede la capacidad de listar archivos secundarios / directorios de ese directorio, los archivos dentro de la carpeta no "heredan" el bit de ejecución de su carpeta principal. - Thomas


Estuve luchando con esto para siempre y finalmente descubrí lo que se necesita. Reemplazar $USER en todas partes con el nombre de usuario SSH al que desea iniciar sesión en el servidor. Si está intentando iniciar sesión como root necesitarías usar /root/.ssh etc., en lugar de /home/root/.ssh que es como es para usuarios no root.

  • El directorio de inicio en el servidor no debe ser editable por otros: chmod go-w /home/$USER
  • La carpeta SSH en el servidor necesita 700 permisos: chmod 700 /home/$USER/.ssh
  • El archivo Authorized_keys necesita 644 permisos: chmod 644 /home/$USER/.ssh/authorized_keys
  • Asegúrate de eso user posee los archivos / carpetas y no root: chown user:user authorized_keys y chown user:user /home/$USER/.ssh
  • Poner la clave pública generada (desde ssh-keygen) en el usuario authorized_keys archivo en el servidor
  • Asegúrese de que el directorio de inicio del usuario esté configurado de la manera que espera que sea y que contenga el directorio correcto .ssh carpeta que has estado modificando. Si no, usa usermod -d /home/$USER $USER para arreglar el problema
  • Finalmente, reinicie ssh: service ssh restart
  • Luego, asegúrese de que el cliente tenga la clave pública y los archivos de clave privada en el usuario local. .ssh carpeta e inicio de sesión: ssh user@host.com

62



Con respecto a su primer párrafo, puedo enviar ssh con claves públicas / privadas con un usuario en mi linux box local (p. abc), diferente del usuario en el servidor remoto (p. def@123.456.789) Solo tenía que asegurarme de que el usuario local era propietario de los archivos .ssh locales (p. abc:abcno root:abc) ` - Michael
Gracias por poner todos los pasos y comandos para los novatos, Alex. La suya es una de las respuestas más útiles aquí. - Nav
+1. "El archivo Authorized_keys necesita 644 permisos" <= ¡eso fue crucial! - Le Quoc Viet
Si le estás dando el directorio .ssh 700 modo, luego está No tiene sentido en dar r-- a grupo y otros, porque sólo tu puede "pasar" .ssh entonces (suponiendo que no existan enlaces duros para estos archivos). Lo mismo para la respuesta aceptada. El valor predeterminado 755 es suficiente. - user3125367


También asegúrese de que otros usuarios no puedan escribir en su directorio personal.

chmod g-w,o-w ~


31



FYI, este comando asume que estás conectado como usuario y no como root - Alex W


Los permisos no deberían tener nada que ver con esto. Su clave privada está encriptada con la contraseña, por lo que debe ingresarla para que la clave privada sea descifrada y utilizable.

Puede considerar ejecutar un agente ssh, que puede almacenar en caché las claves descifradas y las proporcionará a las aplicaciones que las necesiten.


4



Gracias por la información adicional sobre el agente ssh. Parece que hay uno incorporado en Leopard, así que creo que lo haré. Tengo un problema con esto, pero haré otra pregunta.
No subestimes los permisos. Definitivamente todavía entran en juego. - Alex W
@AlexW Entran en juego con otros aspectos de ssh, pero no con el que se pregunta en la pregunta. - cdhowie
Si no tiene una contraseña en las claves privadas (whink de scripts automatizados llamados a distancia), no lo ayudará. Los permisos son necesarios aquí. - nerdoc


Felipe tiene razón: el directorio que contiene su directorio .ssh no debe poder escribirse por grupo u otro. Así chmod go-w ~ es la siguiente cosa lógica que debes probar si todavía te piden una contraseña cuando ssh'ing después de ejecutar ssh-keygen -t rsa; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys, suponiendo que no asigne una frase de contraseña en el comando ssh-keygen, y su directorio .ssh esté en su directorio de inicio.


4