web-dev-qa-db-fra.com

Comment enregistrer une phrase secrète de clé SSH pour un processus sans assistance?

J'ai créé une clé RSA protégée par mot de passe. La clé publique est installée sur le serveur distant dans authorized_keys dans le répertoire .ssh de l'utilisateur.

À partir du serveur demandeur, je peux utiliser SSH sur le serveur distant sans problème, mais je dois entrer une phrase secrète chaque fois que je le fais.

Je souhaite utiliser cette clé pour qu'un serveur Munin mette SSH dans un nœud Munin et obtienne des données. Ainsi, la procédure échoue à cause de la phrase secrète.

J'ai pensé à deux options:

  1. Supprimez la phrase secrète de la clé.
  2. Enregistrez la phrase secrète quelque part, peut-être dans un fichier de configuration?

Y a-t-il une meilleure solution?

Je pense que ssh-agent est censé faire quelque chose comme ceci, mais je ne peux pas trouver d'informations concises à ce sujet.

2
user25389

Vous pouvez utiliser ssh-agent pour le faire. Il vous permet de stocker une phrase secrète en mémoire plutôt que sur le disque. Voici une bonne explication de cette opération pour les travaux par lots: http://www.akadia.com/services/ssh_agent.html .

Essentiellement, vous:

  1. Exécutez ssh-agent en arrière-plan en tant qu'utilisateur qui lancera la connexion SSH.
  2. Utilisez la commande ssh-add pour ajouter la clé à l'agent. Il va demander la phrase secrète.

Vous pouvez automatiser l'exécution de ssh-agent en l'ajoutant à un script exécuté au démarrage, mais vous devez toujours amorcer manuellement l'agent avec la clé pour pouvoir entrer la phrase secrète. Donc, si vous redémarrez, par exemple, vous devrez vous rappeler de le faire.

Le point à considérer est ce que vous essayez d’atteindre en utilisant une phrase secrète sur la clé utilisée, étant donné qu’il s’agit d’un système automatisé.

  1. Si vous utilisez une clé avec une phrase secrète et la stockez dans un fichier de configuration, toute personne ayant accès à la clé aura probablement également accès au fichier de configuration, car elles doivent toutes deux être accessibles par le même utilisateur.
  2. Si vous utilisez ssh-agent pour stocker la phrase secrète, celle-ci doit toujours être exécutée sur le même ordinateur que la clé. Il serait plus difficile d'extraire la phrase secrète de la mémoire que d'un fichier, mais vous venez de rendre leur travail plus difficile plutôt qu'impossible impossible. Toutefois, s’ils obtiennent la clé sans accéder à la machine (par exemple, à partir d’une sauvegarde), cette option est alors plus sûre.
  3. Si vous ne définissez pas de phrase secrète du tout, une personne qui obtient la clé n'a plus aucun travail à faire pour pouvoir l'utiliser.

Dans ces trois scénarios, il serait sage de prévoir le pire et de prendre des mesures pour minimiser les dommages pouvant être causés par une personne ayant accès à une clé utilisable. Par exemple, vous pourriez:

  • Utilisez un compte d'utilisateur spécifique qui n'a accès qu'aux données en cours de récupération.
  • Utilisez une clé utilisée uniquement à cette fin.
  • Restreindre l'hôte que le propriétaire de la clé peut utiliser depuis SSH.
  • Limitez les commandes pouvant être exécutées à l'aide de la clé - voir this .

Dans l’ensemble, vous seul pouvez peser le pour et le contre de ces approches et déterminer si un processus manuel est acceptable dans votre situation.

2
David Edwards