Mon cerveau est enroulé autour de l'essieu sur des clés publiques et privées. Lorsque vous créez un serveur cloud (instance) sur le service EC2 d'Amazon et souhaitez ensuite vous y connecter via SSH, Amazon vous demande de télécharger une clé privée pour établir la connexion. L'idée derrière la clé publique / privée ne suggère-t-elle pas qu'Amazon devrait vous obliger à en télécharger une publique?
De plus, si je configure un serveur SFTP pour un client, dois-je installer sa clé sur le serveur ou lui donner une clé à partir du serveur? Dans les deux cas, doit-il s'agir d'une clé publique ou privée?
Réponses:
En réfléchissant plus profondément au processus d'authentification, que faut-il garder secret? Amazon connaît la moitié publique de la clé, et tout le monde peut connaître la moitié publique. La moitié publique de la paire de clés, lorsqu'elle est associée à la moitié privée, indique que la moitié privée a été utilisée pour l'authentification.
Votre clé privée qui vous est fournie lorsqu'Amazon génère une paire de clés pour vous n'est utile que si vous êtes la seule à l'avoir. Si ce n'est pas un secret, toute autre personne qui la connaît peut également s'authentifier auprès de toute personne détenant la moitié publique de la paire de clés.
Celui qui est authentifié doit détenir la moitié privée . Ce n'est pas grave si tout le monde dans le monde peut vous authentifier en détenant la moitié publique de la clé, mais vous seul devriez contrôler la moitié privée.
la source
Amazon fournit des services de génération de clés car certains systèmes d'exploitation (toux, Windows, toux) peuvent ne pas faciliter la génération des paires de clés SSH.
Avec SSH (et SFTP), la clé publique est installée dans le fichier authorized_keys de l'utilisateur au démarrage de l'instance EC2. La clé privée n'est détenue que par l'utilisateur et est présentée pour s'authentifier auprès du serveur.
De la documentation à:
http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreateKeyPair.html
il semble qu'Amazon génère la paire de clés sur leurs serveurs et vous envoie la clé privée via HTTPS. C'est peut-être moins que parfait (idéalement, vous et personne d'autre ne posséderez la clé privée), mais probablement pas terriblement, étant donné que tout cela se produit dans le contexte de votre session authentifiée et que vous seul (et Amazon temporairement) voyez la clé privée. Vous pouvez également toujours générer et télécharger votre propre clé publique pour une utilisation EC2, tout en gardant la clé privée strictement privée.
Pour configurer les utilisateurs SFTP pour l'authentification par clé, ils doivent générer des clés SSH sur leurs machines. Une fois qu'ils ont généré une paire de clés, ils ne devraient vous envoyer que la clé publique à installer dans le fichier authorized_keys correspondant. La clé privée, comme son nom l'indique, est privée.
la source
L'authentification par clé publique fonctionne dans le sens inverse de la façon dont vous pensez probablement. La clé publique chiffre les messages et la clé privée les déchiffre. Le serveur stocke la clé publique du titulaire du compte et l'utilise pour crypter un message. Seul le détenteur de la clé privée peut déchiffrer ce message.
Si vous envoyez à quelqu'un un secret chiffré avec sa clé publique, s'il peut vous dire ce qu'est ce secret, alors vous savez qu'il détient la clé privée correspondante. L'utilisateur est ensuite authentifié.
AWS vous oblige à télécharger et enregistrer votre clé privée car ils ne la stockent pas, pour des raisons de sécurité. Étant donné que la clé privée n'est stockée nulle part sur AWS, vous pouvez être sûr que votre instance EC2 est sécurisée.
la source
Dans un sens, cela n'a pas d'importance. Une paire de clés privée / publique se compose de deux parties, et laquelle d'entre elles est la publique, c'est à vous de décider. Si quelque chose est chiffré avec une clé, vous avez besoin de l'autre pour le déchiffrer. Si vous avez publié une clé publiquement et pas l'autre, la clé privée est celle que vous n'avez pas publiée.
Pour en venir à votre véritable question: la clé qu'Amazon vous donne est probablement de vous permettre de contrôler vos propres ressources, donc elle ne devrait pas être donnée à d'autres personnes. Dans ce contexte, vous devez faire confiance à Amazon pour avoir votre clé privée, au moins assez longtemps pour la configuration.
Si vous souhaitez que votre client se connecte de cette manière, vous en avez besoin pour vous donner une clé qu'il est prêt à partager avec vous, donc donc sa clé publique. Vous installez ceci sur le serveur dans authorized_keys, ce qui signifie en fait "quiconque possède la clé privée correspondant à cette clé publique peut accéder à cette ressource".
la source