Question Qu'est-ce qu'une clé SSH?


Je me suis inscrit à github et remarquez l'option de clé ssh qui semblait intéressante. Au départ, je m'attendais à quelque chose comme une clé ssl (nom, nom de famille, etc.). Après l'avoir parcouru, je remarque que je ne mets qu'un mot de passe et que c'est toujours myuser @ comp-name (c'est Windows). Pourquoi? Je pensais que c'était un identifiant utilisateur / pass et que je pouvais créer des clés séparées pour des raisons de confidentialité.

Maintenant, je vois que je suis obligé d'en utiliser un pour créer un référentiel. En outre, je vois quelque chose à propos d'un «fichier de clé privée» lorsque je regarde les options. Qu'est-ce qu'une clé SSH et comment créer un utilisateur distinct sans créer de connexion distincte dans Windows.


4
2018-05-17 05:58


origine




Réponses:


Pour ajouter à l'excellente réponse de David:

Pour créer une clé SSH (ou plus précisément: une paire de clés publique / privée) sous Windows, vous pouvez utiliser le (gratuit) PuttyGen. C'est un addon au populaire client SS PuTTY.

Instructions par ex. ici: http://theillustratednetwork.mvps.org/Ssh/Private-publicKey.html

Bien entendu, vous pouvez également créer la clé à l'aide des outils OpenSSH. ceux-ci sont juste moins courants sous Windows.


1
2018-05-17 07:05



C'est super. Maintenant, je me rends compte que ce qui me dérangeait n'est pas un problème puisque name @ comp est un commentaire et que je peux supprimer cela pour utiliser simplement la clé. Les trois que j'utilise (git gui, git / msysbash et puttyGen) utilisent tous des données aléatoires. Je ne peux pas créer des clés identiques avec de longs mots de passe de 30 caractères? la phrase secrète de puttygen ne semble absolument rien faire. Donc, si je perds ma clé, je ne pourrai plus jamais signer. Je dois soit sauvegarder soigneusement ou stocker en ligne quelque part. Cela semble mauvais. Peut-être que je crypterai puis le téléchargerai.
Parlez-vous de la clé privée? Si oui, vous avez raison, le stocker en ligne est une mauvaise idée. Il ne devrait jamais quitter l'ordinateur sur lequel il est généré. Je suppose que vous pouvez le sauvegarder quelque part mais si vous le perdez, vous pouvez toujours en créer un nouveau, donc ce n'est pas cette grosse affaire. (Eh bien, je suppose que cela dépend de votre volonté de mettre à jour la clé dans tous les sites sur lesquels vous vous connectez) - David Z
@ David: Oh. Ouais, ça pourrait être si facile. Je pensais comme pgp où les autres ppl ont besoin de la clé publique et vous ne la stockez pas quelque part. Dans le cas de github, je pouvais toujours me connecter et mettre à jour les clés. Je suppose que ce n'est pas difficile. Mais vous dites qu'ils vont utiliser des données aléatoires et que je ne peux pas générer des clés identiques avec la même phrase? Il est presque inutile d’utiliser une phrase. Cela a été utile.
@ acidzombie24: Il peut y avoir des malentendus ici. "la phrase secrète dans puttygen ne semble absolument rien" -> La phrase secrète est utilisée pour chiffrer votre clé privée, pour protéger votre clé privée si elle tombe entre de mauvaises mains. Vous pouvez simplement omettre la phrase secrète si vous n'avez pas besoin de la protection. La phrase secrète n’a rien à voir avec l’authentification de la clé elle-même, alors oui, si vous perdez la clé privée, vous ne pourrez plus jamais signer (avec cette clé). Mais vous faites quand même des sauvegardes (sécurisées) de toutes vos affaires, n'est-ce pas? ;-) - sleske
@ acidzombie24: "Mais vous dites qu'ils vont utiliser des données aléatoires et que je ne peux pas générer des clés identiques avec la même phrase?" Oui, une clé (privée) doit utiliser des données aléatoires, sinon il ne serait pas sécurisé (b / c, il serait facile à deviner). Et "générer des clés identiques" n'a pas de sens; Si vous voulez une clé identique, copiez-la simplement :-). - sleske


As-tu entendu parler de cryptage asymétrique (également appelé cryptographie à clé publique)? C'est la technologie sur laquelle les clés SSH sont basées.

Le concept de base du cryptage asymétrique est que vous avez deux clés de cryptographie, qui sont généralement de très grands nombres (ou, de manière équivalente, de longues chaînes de données binaires). Tout message chiffré avec l'un d'eux peut être déchiffré seulement avec l'autre - même pas avec la clé de l'original! Ceci est utile car vous pouvez conserver l’une des clés, la Clé privée, à vous-même, et publiez l'autre, le Clé publique, quelque part en ligne ou ailleurs. Les utilisateurs peuvent chiffrer les messages à l'aide de la clé publique et être certains que vous seul, le détenteur de la clé privée correspondante, pouvez les déchiffrer et lire leur contenu. (Voici comment fonctionnent les programmes GPG et PGP et les programmes similaires, si vous en avez déjà entendu parler)

Il s'avère que le processus fonctionne aussi en sens inverse, avec les touches commutées. Si vous cryptez quelque chose à l'aide de votre clé privée, celle-ci ne peut être déchiffrée qu'à l'aide de la clé publique correspondante. Cela peut sembler inutile car n'importe qui dans le monde peut obtenir votre clé publique et décrypter le message, mais cela a un effet secondaire très utile: cela confirme que le message est venu de vous. Parce que personne d'autre dans le monde n'a votre clé privée, personne d'autre n'aurait pu créer un message pouvant être déchiffré avec votre clé publique.

Si vous y réfléchissez, être en mesure de vérifier qu'un message provient de vous et non d'un imposteur est exactement ce que signifie l'authentification. Chaque fois que vous vous connectez à un site Web en utilisant un nom d'utilisateur et un mot de passe, vous fournissez des informations secrètes que vous êtes censés connaître, afin de prouver que la demande de connexion provient de vous. Eh bien, vous pouvez faire la même chose avec votre clé privée: cryptez votre demande de connexion afin de prouver qu'elle provient de vous. Et c'est comment l'authentification par paire de clés SSH fonctionne. Au lieu de fournir un nom d'utilisateur et un mot de passe, le serveur SSH envoie à votre client SSH un message à chiffrer avec votre clé privée. Le client le chiffre, renvoie le message chiffré et le serveur le déchiffre à l'aide de votre clé publique pour le vérifier. Si ça passe le chèque, félicitations, vous êtes connecté!

Je ne me suis pas encore inscrit à GitHub, alors je ne connais pas la procédure exacte, mais je soupçonne que quand ils demandent un username@host, c'est juste comme un commentaire pour identifier la clé particulière. Si vous vous connectez à GitHub à partir de différents ordinateurs, vous aurez une clé privée SSH différente pour chacun de ces ordinateurs, et GitHub doit garder une trace de toutes les clés publiques correspondantes. le username@host est un moyen assez classique d'étiqueter les clés publiques SSH provenant de personnes différentes et / ou de différents hôtes.

Par ailleurs, il convient de mentionner que l'authentification par paire de clés SSH est généralement considérée comme plus sécurisée que l'authentification par nom d'utilisateur / mot de passe. La raison en est que lorsque vous utilisez un nom d'utilisateur et un mot de passe pour vous connecter à un site Web, vous devez partager ces informations avec au moins un autre ordinateur: le serveur Web qui exécute le site. La plupart du temps, ça va, mais c'est toujours possible que quiconque est responsable du site Web, ou même de quelqu'un ayant accès au serveur, pourrait enregistrer votre mot de passe et l'utiliser derrière votre dos pour vous faire passer pour un usurpateur d'identité. L'utilisation d'une paire de clés privée / publique élimine cette possibilité, car vous ne partagez jamais la clé privée avec n'importe qui du tout, même pas le serveur auquel vous vous connectez. Ainsi, bien que le serveur (par exemple, GitHub) soit parfaitement capable de vérifier si vous vous connectez vraiment, il n’a toujours pas assez d’informations pour prétendre vous connecter en tant que vous.

En ce qui concerne la manière de créer une paire de clés SSH: je suis moi-même un utilisateur Linux, donc je ne sais pas comment procéder avec le logiciel que vous utilisez sous Windows. Quel que soit le programme client SSH que vous utilisez (PuTTY?), Vous devriez pouvoir créer une paire de clés.


9
2018-05-17 06:18