Lorsque j'ai appris à créer des clés ssh, les tutoriels que j'ai lus indiquaient tous qu'il fallait choisir une bonne phrase de passe. Mais récemment, lors de la mise en place d'un processus démon qui doit se connecter en ssh à une autre machine, j'ai découvert que la seule façon (semble-t-il) d'avoir une clé que je n'ai pas besoin d'authentifier à chaque démarrage est de créer une clé avec une phrase d'authentification vide. Je me demande donc quels sont les problèmes liés à l'utilisation d'une clé sans phrase d'authentification.
Réponses
Trop de publicités?Une clé sans phrase de passe dépend du fait que personne d'autre ne peut accéder à cette clé (qui ne pourrait de toute façon pas accéder aux ressources auxquelles elle donne accès). Par conséquent, si la clé donne accès à la machine voisine et que les deux machines ont le même niveau de sécurité électronique et physique, ce n'est pas vraiment un problème.
D'un autre côté, si votre clé se trouve sur une machine dont la sécurité est médiocre (peut-être qu'elle a de nombreux utilisateurs non fiables, qu'elle est facilement accessible physiquement, ou qu'elle n'est pas maintenue à jour avec son Parcheando), alors vous ne voudrez probablement pas conserver des clés sans phrase sur cette machine.
En fin de compte, c'est une question de confiance dans votre configuration et d'évaluation des risques/coûts. Si vous pouvez être certain qu'il n'est pas plus facile pour un attaquant d'accéder à la clé qu'à la ressource à laquelle la clé vous donne accès, alors tout va bien. Si vous n'avez pas cette confiance, vous devriez probablement corriger les raisons pour lesquelles vous le faites :)
Une autre solution, qui renforce la sécurité tout en vous facilitant la tâche, de sorte que vous n'ayez pas à taper votre mot de passe en permanence :
si vous voulez crypter votre clé privée, vous pouvez utiliser ssh-agent
sur votre poste de travail pour "mettre en cache" la clé non chiffrée. lorsque vous souhaitez stocker votre clé déchiffrée, vous exécutez ssh-add ~/.ssh/id_rsa
ou quel que soit le nom de votre clé privée. Le mot de passe vous sera demandé et la clé décryptée sera disponible pour vos connexions ssh jusqu'à ce que vous vous déconnectiez, que vous tuiez ssh-agent
ou l'arrêt.
vous pouvez kill
les clés stockées avec ssh-agent -k
et vous pouvez attribuer une durée de vie à la clé pour qu'elle soit en mémoire avec ssh-agent -t [seconds]
Par exemple, si vous ne voulez pas que votre clé soit déchiffrée indéfiniment, mais que vous voulez faire beaucoup de ssh autour de vos hôtes, vous pouvez fixer le délai d'attente à 5-10 minutes, de sorte que vous n'ayez pas à entrer continuellement le mot de passe de votre clé.
Encore une fois, tout cela dépend de votre degré de confiance dans la sécurité de votre /station de travail/. Si vous êtes le seul à y avoir accès, que vous disposez d'un mot de passe local assez sûr et que vous n'invitez pas les exploits et les rootkits à se manifester, votre clé privée sans phrase est raisonnablement sûre.
Si vous êtes comme moi et que vous conservez votre clé privée sur une clé USB, vous voudrez certainement la crypter, même s'il ne s'agit que d'une clé privée (distincte de celle que j'utilise sur mon poste de travail, de sorte que si je perds ma clé, je peux facilement retirer la clé publique de la clé USB de celle de mon serveur). ~/.ssh/authorized_keys
ce qui constitue également une excellente raison d'ajouter des commentaires UTILES à vos clés publiques).
dans votre réponse à une question précédente, vous avez dit que seules les personnes en qui vous avez confiance ont accès à la machine contenant les clés. je tiens juste à préciser que votre clé privée n'a PAS besoin d'être sur le serveur auquel vous vous connectez, au cas où c'est ce que vous faites. seule votre clé publique a besoin d'être sur le serveur, et ce n'est pas un problème, c'est pourquoi il s'agit d'une clé "publique".
Oh, j'ai oublié de mentionner que je lance ssh-agent
lorsque je démarre X, sinon les clés déchiffrées que je stocke avec ssh-add
ne sont pas retenus à travers différents xterm
sessions, et je dois réintroduire le mot de passe à chaque fois que je ferme l'application. xterm
i lancé ssh-add
en. en. en. ~/.xinitrc
j'ai :
if [ -x /usr/bin/ssh-agent ]; then
eval $(/usr/bin/ssh-agent)
fi
j'ai l'appel à ssh-agent
enveloppé dans eval
parce que ssh-agent renvoie des variables d'environnement qui doivent être définies lorsqu'il s'exécute, et qu'il s'exécute à partir de ~/.xinitrc
les variables d'environnement sont constantes tout au long de la session X.
Vous pouvez consulter un question similaire J'ai posé une question sur les clés privées SSL pour les serveurs web. En fait, il y a trois options :
- Protéger la clé avec des perms du système de fichiers.
- Utilisez une clé protégée par un mot de passe et entrez la clé manuellement à chaque redémarrage.
- Utilisez une clé protégée par un mot de passe et stockez la clé dans le système de fichiers pour automatiser le redémarrage.
Chacune d'entre elles est imparfaite, tout dépend donc de ce que vous craignez le plus.
Pour l'accès automatisé, qui, comme vous le dites, nécessite des clés sans phrase, j'utilise toujours les options supplémentaires de authorized_keys (voir sshd(8)) pour limiter la commande qui peut être exécutée.
En général, je fournis un script soigneusement écrit à l'extrémité distante, qui effectue exactement le travail (ou les travaux - il peut examiner les paramètres) que je souhaite voir autorisé.
Ensuite, je verrouille également les adresses IP qui peuvent se connecter avec cette clé (ce n'est pas infaillible à 100 %, mais cela convient également à la restriction des commandes).
- Réponses précédentes
- Plus de réponses