web-dev-qa-db-fra.com

Meilleur système de gestion des clés SSH?

J'ai plusieurs ordinateurs clients (c'est-à-dire des ordinateurs portables, des ordinateurs de bureau, etc.), et je me connecte à plusieurs machines de serveurs que je gère, et je les connecte à tous via SSH. Je peux imaginer plusieurs stratagèmes de gérer les clés SSH qui auraient un sens et je suis curieux de ce que font les autres.

Option 1: Un clavier public/public mondial/privé.

Je générerais un keypair public/privé et placerais la clé privée sur chaque ordinateur client et la clé publique de chaque machine serveur.

Option 2: un keypair par machine serveur.

Je générerais un keypair sur chaque machine serveur et mettre chaque clé privée sur mes machines clientes.

Option 3: un keypair par ordinateur client.

Chaque ordinateur client aurait une clé privée unique et chaque machine serveur aurait les clés publiques de chaque machine client que je voudrais vous connecter.

Option 4: Un keyPair par client/paire de serveur

Totalement à la mer?

Lequel de ceux-ci est le mieux? Y a-t-il d'autres options? Quels critères à utiliser pour évaluer la bonne configuration?

42
slacy

J'utilise option 3: un keyPair par ordinateur client et cela a le plus de sens pour moi. Voici quelques-unes des raisons:

  • Si un client est compromis, cette touche (et seule cette clé) doit être supprimée des serveurs.
  • Il est suffisamment flexible pour décider de ce que je peux accéder à partir d'où, sans accorder un accès générique à tous les serveurs de tous les clients.
  • Très pratique. Il n'y a que 1 clé pour SSH-Ajouter, pas de confusion.
  • Facile à configurer et à administrer sur option 4

option 4 est sympa, mais c'est trop de travail. Option vous obtient 98% avec beaucoup moins de tracas.

33
dwc

J'utilise une solution un peu plus compliquée mais très polyvalente car je souhaite maintenir une certaine séparation dans les clés d'identité SSH utilisées pour mes serveurs de réseau domestique, serveurs de bureau, consulter des serveurs de réseau client et d'autres systèmes différents que j'ai des comptes.

Maintenant que cela a déclaré que je travaille à partir de postes de travail Linux presque exclusivement, j'ai une clé USB qui est configurée à l'aide du cryptage LUKS et de mon gestionnaire de fenêtres X11, ainsi que le démon HAL, détectez le lecteur crypté LUKS et à l'invite de la phrase secrète de déchiffrement lorsqu'il est inséré et tenté de être monté. En stockez cela sur un lecteur crypté comme je le fais, je ne stocke jamais mes clés SSH sur une station de travail.

J'ai ensuite la configuration suivante dans mon ~/.ssh/config déposer:

Host *
    Protocol 2
    IdentityFile %d/.ssh/keys.d/id_rsa.%l
    IdentityFile %d/.ssh/keys.d/id_dsa.%l
    IdentityFile %d/.ssh/keys.d/%u@%l

Le % d est traduit pour être le répertoire de base de l'utilisateur par OpenSSH et dans le répertoire ~/.ssh J'ai créé Keys.d en tant que Symlinks vers le chemin du répertoire sur le lecteur USB crypté lorsqu'il est correctement monté.

L'expression % l est traduite pour être le nom d'hôte des machines client locales et % sera traduit vers le nom d'utilisateur du client local.

Ce que cette configuration permet de rechercher une clé à l'aide de 3 expressions différentes. Par exemple, si le nom d'utilisateur de mon client local était jdoe _ et mon nom de machine client local était examplehost Il ressemblerait à l'ordre suivant jusqu'à ce qu'il ait trouvé une clé qui existait à la fois et a été acceptée par le serveur distant.

/home/jdoe/.ssh/keys.d/id_rsa.examplehost
/home/jdoe/.ssh/keys.d/id_dsa.examplehost
/home/jdoe/.ssh/keys.d/jdoe@examplehost

Vous pouvez même utiliser l'expression % R pour rechercher une clé spécifique pour le nom d'utilisateur du serveur distant ou % h pour le nom d'hôte de serveur distant comme % et % l ont été utilisés.

MISE À JOUR: Maintenant, j'utilise actuellement l'agent GPG GNUPG avec une compatibilité SSH-Agent pour simplement lire et utiliser la clé d'authentification de My OpenPGP V2 SmartCard.

26
Jeremy Bouse

J'éliminerais vos deux options 1 (dont je soupçonnais que l'une seule était censée être l'option 2 ;-) Parce que les clés privées sont des données sensibles, et il est logique de les garder aussi peu de places que possible. Personnellement, je ne voudrais jamais copier une clé privée d'un ordinateur à un autre (ou même d'un fichier à un autre sur le même ordinateur), sauf peut-être pour effectuer des sauvegardes. Bien que contrairement à la plupart des clés de cryptage, si une clé SSH est perdue, ce n'est pas la fin du monde (en créer un nouveau, vous ne perdez aucune donnée).

6
David Z

Option 3 et utilisez quelque chose comme la marionnette pour gérer la gestion des clés.

1
diq