653 votes

Permissions sur la clé privée dans le dossier .ssh ?

J'ai changé mes permissions dans mon .ssh et maintenant, lorsque j'utilise un logiciel qui utilise ma clé privée, je dois taper mon mot de passe à chaque fois. Quelles devraient être mes autorisations sur mon id_rsa fichier pour ne pas avoir à taper un mot de passe à chaque fois que j'utilise une application qui l'utilise ?

Actuellement, mes permissions sont définies comme suit :

-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

15 votes

#!/bin/bash find .ssh/ -type f -exec chmod 600 {} \;; find .ssh/ -type d -exec chmod 700 {} \;; find .ssh/ -type f -name "*.pub" -exec chmod 644 {} \;

0 votes

Merci @AkhilJalagam, votre code vient de m'éviter de réfléchir. J'adore ce genre de choses. Je sais comment le faire, mais pourquoi le faire si c'est déjà là :D

1065voto

Typiquement, vous voulez que les permissions soient :

  • .ssh répertoire : 700 (drwx------)
  • clé publique ( .pub ) : 644 (-rw-r--r--)
  • clé privée ( id_rsa ): 600 (-rw-------)
  • Enfin, votre répertoire personnel ne doit pas être accessible en écriture par le groupe ou par d'autres personnes (au plus 755 (drwxr-xr-x) ).

Je suppose que vous voulez dire que vous devez entrer votre mot de passe système/utilisateur à chaque fois, et qu'auparavant vous n'aviez pas à le faire. La réponse de cdhowie suppose que vous avez défini un mot de passe/passphrase lors de la génération de vos clés, et si vous l'avez fait, alors comme il le dit, vous devrez entrer votre mot de passe à chaque fois, à moins que vous n'utilisiez un agent ssh.

28 votes

J'ai trouvé ailleurs que si l'on utilise le fichier authorized_keys, il doit être chmodé à 640, c'est-à-dire -rw-r----- .

12 votes

Où puis-je trouver ces informations dans les pages de manuel ?

219 votes

Je suis revenu sur ce post environ 30 fois maintenant. Je ne peux pas croire que je ne m'en souvienne pas.

156voto

Alex W Points 1616

J'ai lutté avec cela pendant une éternité et j'ai finalement trouvé ce qui est nécessaire. Remplacer $USER partout avec le nom d'utilisateur SSH auquel vous voulez vous connecter sur le serveur. Si vous essayez de vous connecter en tant que root vous devez utiliser /root/.ssh etc., au lieu de /home/root/.ssh ce qui est le cas pour les utilisateurs non-roots.

  • Le répertoire personnel sur le serveur ne doit pas être accessible en écriture par d'autres personnes : chmod go-w /home/$USER
  • Le dossier SSH sur le serveur a besoin des permissions 700 : chmod 700 /home/$USER/.ssh
  • Le fichier Authorized_keys a besoin de 644 permissions : chmod 644 /home/$USER/.ssh/authorized_keys
  • Assurez-vous que user possède les fichiers/dossiers et non root : chown user:user authorized_keys y chown user:user /home/$USER/.ssh
  • Mettez la clé publique générée (de ssh-keygen ) dans le dossier de l'utilisateur authorized_keys sur le serveur
  • Assurez-vous que le répertoire d'origine de l'utilisateur est défini comme vous le souhaitez et qu'il contient le bon code d'accès. .ssh que vous avez modifié. Si ce n'est pas le cas, utilisez usermod -d /home/$USER $USER pour régler le problème
  • Enfin, redémarrez ssh : service ssh restart
  • Assurez-vous ensuite que le client dispose des fichiers de la clé publique et de la clé privée dans le répertoire de l'utilisateur local. .ssh et se connecter : ssh user@host.com

0 votes

En ce qui concerne le premier paragraphe, je suis en mesure d'utiliser des clés publiques/privées avec un utilisateur sur mon ordinateur local (par exemple, un utilisateur qui a un accès à l'Internet). abc ), différent de celui de l'utilisateur du serveur distant (par ex. def@123.456.789 ). Je devais juste m'assurer que l'utilisateur local possédait les fichiers .ssh locaux (par ex. abc:abc pas root:abc )`

1 votes

Merci de mettre toutes les étapes et les commandes pour les débutants, Alex. Votre réponse est l'une des plus utiles ici.

9 votes

+1. "Le fichier Authorized_keys a besoin de 644 permissions" <= c'était crucial !

81voto

Ashutosh Jindal Points 661

Je poste ceci comme une réponse séparée car je voulais voir les recommandations de la page de manuel traduites en permissions.

Résumé basé sur les citations de la page de manuel (lien à la fin) :

+------------------------+-------------------------------------+-------------+-------------+
| Directory or File      | Man Page                            | Recommended | Mandatory   |
|                        |                                     | Permissions | Permissions |
+------------------------+-------------------------------------+-------------+-------------+
| ~/.ssh/                | There is no general requirement to  | 700         |             |
|                        | keep the entire contents of this    |             |             |
|                        | directory secret, but the           |             |             |
|                        | recommended permissions are         |             |             |
|                        | read/write/execute for the user,    |             |             |
|                        | and not accessible by others.       |             |             |
+------------------------+-------------------------------------+-------------+-------------+
| ~/.ssh/authorized_keys | This file is not highly sensitive,  | 600         |             |
|                        | but the recommended permissions are |             |             |
|                        | read/write for the user, and not    |             |             |
|                        | accessible by others                |             |             |
+------------------------+-------------------------------------+-------------+-------------+
| ~/.ssh/config          | Because of the potential for abuse, |             | 600         |
|                        | this file must have strict          |             |             |
|                        | permissions: read/write for the     |             |             |
|                        | user, and not accessible by others. |             |             |
|                        | It may be group-writable provided   |             |             |
|                        | that the group in question contains |             |             |
|                        | only the user.                      |             |             |
+------------------------+-------------------------------------+-------------+-------------+
| ~/.ssh/identity        | These files contain sensitive data  |             | 600         |
| ~/.ssh/id_dsa          | and should be readable by the user  |             |             |
| ~/.ssh/id_rsa          | but not accessible by others        |             |             |
|                        | (read/write/execute)                |             |             |
+------------------------+-------------------------------------+-------------+-------------+
| ~/.ssh/identity.pub    | Contains the public key for         | 644         |             |
| ~/.ssh/id_dsa.pub      | authentication.  These files are    |             |             |
| ~/.ssh/id_rsa.pub      | not sensitive and can (but need     |             |             |
|                        | not) be readable by anyone.         |             |             |
+------------------------+-------------------------------------+-------------+-------------+

Toutes les citations de la page de manuel sont tirées de http://linuxcommand.org/lc3_man_pages/ssh1.html

7 votes

N'oublions pas known_hosts > "~/.ssh/known_hosts Contient une liste de clés d'hôte pour tous les hôtes auxquels l'utilisateur s'est connecté et qui ne sont pas déjà dans la liste des clés d'hôte connues à l'échelle du système. [...] Ce fichier doit être accessible en écriture uniquement par root/le propriétaire et peut, mais ne doit pas nécessairement, être lisible par le monde entier." ( linux.die.net/man/8/sshd )

1 votes

Qu'en est-il de 440 pour la clé privée (id_rsa) ? Il y a un groupe de "n" utilisateurs, c'est-à-dire la même personne mais avec des comptes différents, donc x4x devrait convenir ? De plus, la clé privée ne doit pas être modifiée, alors pourquoi mettre 6xx ?

40voto

akauppi Points 3125

Assurez-vous également que votre répertoire personnel n'est pas accessible en écriture par d'autres utilisateurs.

chmod g-w,o-w ~

11 votes

Pour votre information, cette commande suppose que vous êtes connecté en tant qu'utilisateur et non en tant que root.

6voto

David Yenglin Points 185

Les autorisations ne devraient pas avoir de rapport avec cela. Votre clé privée est cryptée avec le mot de passe, vous devez donc le saisir pour que la clé privée soit décryptée et utilisable.

Vous pouvez envisager d'exécuter un agent ssh, qui peut mettre en cache les clés déchiffrées et les fournir aux applications qui en ont besoin.

0 votes

Merci pour les informations supplémentaires sur l'agent ssh. Il semble qu'il y en ait un intégré dans Leopard, je pense donc que je vais le faire. J'ai un peu de mal à l'utiliser mais je vais poser une autre question.

9 votes

Ne sous-estimez pas les permissions. Elles entrent toujours en jeu.

0 votes

@AlexW Ils entrent en jeu dans d'autres aspects de ssh, mais pas dans celui qui fait l'objet de la question.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X