Est-il possible de partager un fichier de clé privée entre plusieurs ordinateurs / services?


110

Nous savons donc tous comment utiliser une clé publique / privée en utilisant SSH, etc. Mais quel est le meilleur moyen de les utiliser / de les réutiliser? Devrais-je les garder dans un endroit sûr pour toujours? Je veux dire, il me fallait une paire de clés pour accéder à GitHub. J'ai créé une paire à partir de rien et je l'ai utilisée pendant un certain temps pour accéder à GitHub. Ensuite, j'ai formaté mon disque dur et perdu cette paire. Gros problème, j'ai créé une nouvelle paire et configuré GitHub pour utiliser ma nouvelle paire. Ou est-ce quelque chose que je ne veux pas perdre?

J'avais également besoin d'une paire de clés publique / privée pour accéder aux systèmes de notre entreprise. Notre administrateur m'a demandé ma clé publique et j'ai généré une nouvelle paire et la lui ai donnée. Est-il généralement préférable de créer une nouvelle paire pour accéder à différents systèmes ou est-il préférable d’avoir une paire et de la réutiliser pour accéder à différents systèmes? De même, est-il préférable de créer deux paires différentes et d’en utiliser une pour accéder aux systèmes de notre société depuis chez vous et l’autre pour accéder aux systèmes depuis le travail, ou est-il préférable d’avoir une seule paire et de l’utiliser des deux côtés?


Ce n'est pas directement une réponse à votre question, mais il est également conseillé de définir des phrases secrètes pour chaque clé. Idéalement, séparez les phrases de passe pour chaque clé (utilisez un gestionnaire de mots de passe). La raison en est la suivante: Si une clé privée est compromise (ordinateur portable volé, ordinateur piraté), vous avez un peu de temps avant que la clé puisse être forcée et vous pouvez remplacer la clé publique sur toutes les machines qui en sont équipées. , avant que votre attaquant puisse le faire. Source: help.ubuntu.com/community/SSH/OpenSSH/…
Xandor Schiefer

Réponses:


86

Vous devez absolument avoir des clés privées séparées par origine . En gros, cela signifie qu’il devrait généralement y avoir une seule copie de chaque clé privée (sans compter les sauvegardes). Il est correct d'utiliser la même clé privée provenant d'une machine étroitement liée, dans les cas où une intrusion dans l'une vous donne essentiellement accès à l'autre (par exemple, si elles sont l'une dans l'autre shosts.equiv). N'utilisez pas la même clé privée sur des machines de domaines différents (par exemple, à la maison ou au travail), ne partagez jamais une clé privée entre deux utilisateurs et ne partagez jamais une clé privée entre un ordinateur portable et une autre machine.

Pour la plupart, je ne vois pas l'intérêt d'avoir différentes clés privées pour différentes destinations. Si une clé privée est compromise, toutes les autres clés privées stockées dans le même répertoire le seront sûrement également, ce qui entraînera une complication supplémentaire sans aucun avantage pour la sécurité.

Si vous suivez ces principes, chaque paire de clés identifie une paire (machine, utilisateur), ce qui facilite la gestion des autorisations.

Je peux penser à deux exceptions à la règle générale d'une seule clé privée par origine:

  • Si vous disposez d'une clé sans mot de passe donnant uniquement accès à une commande spécifique sur un ordinateur spécifique (par exemple, un mécanisme de sauvegarde ou de notification automatique), cette clé doit être différente de la clé d'accès shell générale.
  • Si certaines machines sont connectées par intermittence, vous pouvez avoir une ancienne clé privée à côté d'une nouvelle clé privée, jusqu'à ce que vous ayez fini de déployer la nouvelle clé.

5
C'est comme ça que j'ai toujours utilisé ma paire de clés. Je ne comprenais pas pourquoi GitHub recommandait de générer une nouvelle paire de clés dans leurs instructions de configuration. J'ai ignoré cela et utilisé ma paire de clés standard. Je suppose qu'ils sont conservateurs.
toolbear74

Ok, vous dites donc "N'utilisez pas la même clé privée sur des machines de royaumes différents", mais que se passe-t-il si DNS résout un nom d'hôte donné sur l'une ou l'autre machine en fonction de votre emplacement? Sans partager la clé privée, des avertissements ou des échecs se produisent lorsque j'essaie de ssh ou de rsync avec ce nom d'hôte, car ssh est confus d'avoir deux clés distinctes pour le même nom d'hôte.
Michael

@ Michael Je ne comprends pas le problème que vous pourriez avoir avec les clés d' utilisateur dans le scénario que vous décrivez, c'est en quoi consiste ce fil. SSH deviendrait confus au sujet des clés d’ hôte , mais en tant qu’utilisateur, ce que vous voyez est la clé publique de l’hôte, pas la clé privée de l’hôte, et le partage de la clé privée de l’hôte est dangereux. Je ne recommanderais cela que si les hôtes sont complètement équivalents (redondance au cas où l'un d'entre eux échouerait), et probablement même pas alors.
Gilles

Ah ok. On dirait qu'il n'y a pas beaucoup de distinction claire entre les deux, et on suppose simplement que vous savez de quoi on parle.
Michael

1
@JSBach Avoir des clés séparées par domaine vous permet de définir des autorisations plus fines (la clé stockée sur le domaine de sécurité basse A est autorisée pour être utilisée entre des machines de A, mais la connexion à B nécessite un facteur d'authentification plus fort) et vous permet de les révoquer. séparément (le domaine A a été compromis, mais je peux toujours me connecter à C depuis B). La connexion unique est le cas où vous vous connectez au système le plus sécurisé, puis vous pouvez vous connecter ailleurs. Je ne sais pas quels risques ils voient en ayant plusieurs clés par utilisateur. Ce serait un sujet pour la sécurité de l'information .
Gilles

4

Je ne sais pas quelle est la meilleure façon mais je peux dire quelle est ma façon de faire.

En tant qu'administrateur système, j'utilise une clé différente pour accéder à chaque serveur / service en tant que root. De cette façon, si une clé est perdue ou compromise, je limite les risques à un seul serveur et je n'ai pas besoin de mettre à jour tous mes services avec de nouvelles clés.

En parlant d’utilisateurs, j’utilise une clé différente pour chacun d’eux. Avec cette clé, l'utilisateur peut accéder au service dont il a besoin en tant qu'utilisateur non privilégié. De cette façon, je peux facilement accorder ou révoquer l'accès à des services uniques à chaque utilisateur. Si l'utilisateur perd sa clé, je peux la supprimer de tous les services et limiter le risque d'accès non autorisé.


+1 Je vais parler à mon patron d'une nouvelle politique d'utilisation des clés ;-) par serveur / service semble encore plus sécurisé que par réseau
Diskilla

1

Je pense que vous pouvez utiliser la clé privée n’importe où, à condition de mettre une phrase secrète dessus, ce qui signifie que si vous souhaitez partager votre clé privée avec quelques machines, par exemple, les ordinateurs portables 1, 2 et 1, le bureau 2 devraient très bien fonctionner.

D'après mon expérience, mon ordinateur principal est mon ordinateur de bureau. Je fais la plupart de mon travail avec son processeur puissant, mais j'ai parfois besoin d'utiliser mon ordinateur portable sur un portable, de dépanner des centres de données et autres, de sorte que je puisse toujours me connecter à des hôtes. que ma clé publique réside dans.


1
Lisez la meilleure réponse ici. Vous le faites mal. Ce n'est pas que vous ne pouvez pas le faire de cette façon mais vous ne devriez pas.
PhilT

2
Vous ne pouvez pas voir pourquoi tous les votes négatifs. Les réseaux universitaires (par exemple) ont souvent un répertoire personnel en réseau. Ainsi, la même clé privée est utilisée partout par un utilisateur, même sur les ordinateurs portables qui lui sont attribués. Tant que vous ne le copiez pas non crypté sur Internet, je pense que c'est bien si vous comprenez le risque. C'est plus pratique aussi, de ne pas avoir à ajouter votre clé publique à 2 000 endroits différents simplement parce que vous vous êtes connecté à une autre machine.
Asfand Qazi

Upvote parce que vous ne devriez pas perdre rep pour cette réponse. C'est une préférence personnelle, utiliser évidemment une clé distincte par service et par machine vous donne finalement plus de contrôle, mais parfois c'est juste une perte de temps en fonction de votre cas d'utilisation.
Daniel Dewhurst

0

Dans mon entreprise, nous utilisons ces clés spécifiques à l'utilisateur. Cela signifie cas deux. L'utilisateur a sa propre clé qui est utilisée pour chaque machine qu'il utilise pour se connecter au système de l'entreprise. Mon avis est d'utiliser une clé pour un système. Cela signifie que vous utilisez cette clé sur chaque machine dont vous avez besoin pour vous connecter à des réseaux spécifiques. Dans votre cas, il s'agirait d'une clé pour GitHub et d'une clé pour le système de l'entreprise. Donc, si votre administrateur vous le redemande, je lui donnerais la même clé que la dernière fois. pas une nouvelle. Mais, je ne sais pas s’il existe une politique d’utilisation commune pour ces clés et je me trompe depuis. C'est sûr possible ;-)


0

La clé publique que vous avez générée est pour tout le monde. Cela leur permettra de a) vérifier l'authenticité b) de crypter pour vous

La clé privée est bien privée. C'est seulement pour toi. Et c'est la clé que vous devriez sauvegarder quelque part, dans un endroit sécurisé. Vous pouvez également le chiffrer avec un mot de passe sécurisé si vous l’enregistrez sur une clé USB par exemple.

La clé publique est votre identité aux autres. Donc, il n'y a pas de problème / il est préférable d'utiliser une paire de clés pour tout, du moins lorsque vous ne souhaitez pas utiliser une nouvelle identité explicite, afin que les autres ne sachent pas que c'est vous.


3
Merci, mais votre réponse n’est pour la plupart pas liée à ma question. Voir la réponse de @ Diskilla.
Behrang
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.