web-dev-qa-db-fra.com

Autorisations sur clé privée dans le dossier .ssh?

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

Actuellement, mes autorisations sont définies sur:

-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
351
Jody G

En règle générale, vous souhaitez que les autorisations soient:

  • .ssh répertoire: 700 (drwx------)
  • clé publique (fichier .pub): 644 (-rw-r--r--)
  • clé privée (id_rsa): 600 (-rw-------)
  • enfin, votre répertoire personnel ne devrait pas être accessible en écriture par le groupe ou 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 que vous n'y étiez pas auparavant. La réponse de cdhowie suppose que vous définissez un mot de passe/une phrase secrète lors de la génération de vos clés. Si tel est le cas, vous devrez entrer votre mot de passe à chaque fois sauf si vous utilisez un agent ssh.

585
tab33

Je me débattais avec cela pour toujours et j'ai finalement compris ce dont on avait besoin. Remplacez $USER partout par le nom d'utilisateur SSH auquel vous souhaitez vous connecter sur le serveur. Si vous essayez de vous connecter en tant que root, vous devrez utiliser /root/.ssh etc., au lieu de /home/root/.ssh, comme c'est le cas pour les utilisateurs non root.

  • Le répertoire de base sur le serveur ne doit pas être accessible en écriture pour les autres: chmod go-w /home/$USER
  • Le dossier SSH sur le serveur nécessite 700 autorisations: chmod 700 /home/$USER/.ssh
  • Le fichier Authorized_keys nécessite 644 autorisations: chmod 644 /home/$USER/.ssh/authorized_keys
  • Assurez-vous que user possède les fichiers/dossiers et non root: chown user:user authorized_keys et chown user:user /home/$USER/.ssh
  • Placez la clé publique générée (à partir de ssh-keygen) dans le fichier authorized_keys de l'utilisateur sur le serveur.
  • Assurez-vous que le répertoire de base de l'utilisateur correspond à ce que vous attendez et qu'il contient le dossier .ssh correct que vous avez modifié. Sinon, utilisez usermod -d /home/$USER $USER pour résoudre le problème.
  • Enfin, redémarrez ssh: service ssh restart
  • Assurez-vous ensuite que le client dispose des fichiers de clé publique et de clé privée dans le dossier .ssh de l'utilisateur local et que vous vous connectez: ssh [email protected].
82
Alex W

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

chmod g-w,o-w ~

35
Felipe Alvarez

Les autorisations ne devraient avoir rien à voir avec cela. Votre clé privée est cryptée avec le mot de passe. Vous devez donc la saisir pour que la clé privée soit déchiffrée et utilisable.

Vous pourriez 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.

5
cdhowie

Felipe est correct - le répertoire contenant votre répertoire .ssh ne doit pas être accessible en écriture par groupe ou autre. Ainsi, chmod go-w ~ est la prochaine chose logique à essayer si vous êtes toujours invité à entrer un mot de passe lorsque ssh s'exécute après l'exécution de ssh-keygen -t rsa; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys, en supposant que vous n'attribuez pas de phrase secrète dans la commande ssh-keygen et que votre répertoire .ssh se trouve dans votre répertoire personnel. .

4
mikentalk