Gagnez du temps en vous connectant à GitHub via SSH en utilisant l'authentification sans mot de passe.
L'authentification avec GitHub implique généralement l'utilisation d'un jeton d'accès ou d'un mot de passe. Cependant, ces méthodes peuvent être peu pratiques et non sécurisées, en particulier lors de l'accès à GitHub à partir de plusieurs appareils.
GitHub offre la possibilité d'utiliser Secure Shell (SSH) pour l'authentification. SSH présente un protocole réseau sécurisé pour l'accès à distance à la machine. Cette fonctionnalité s'avère particulièrement utile dans les situations qui exigent une automatisation ou un accès à distance fréquent.
Comprendre l'authentification SSH
L'authentification avec SSH implique l'utilisation de clés cryptographiques pour établir une connexion sécurisée (tunnel) entre un client (machine locale) et un serveur (GitHub).
Lors de l'utilisation de SSH pour GitHub, un utilisateur génère une paire de clés SSH: une clé publique et une clé privée. La clé publique est téléchargée sur le compte GitHub de l'utilisateur, tandis que la clé privée reste stockée en toute sécurité sur la machine locale de l'utilisateur.
Le processus peut être comparé au concept d'une serrure et d'une clé. La clé publique (verrou) est destinée à être ouvertement partagée et stockée en toute sécurité côté serveur. Elle sert de contrepartie à la clé privée, permettant au serveur de vérifier l'identité de votre machine locale. Inversement, la clé privée (clé) agit comme un identifiant unique stocké exclusivement sur votre machine locale, permettant une authentification réussie auprès du serveur.
Lors de l'authentification avec GitHub, votre machine locale présente sa clé privée comme preuve d'identité. Le serveur vérifie si la clé publique correspondante associée à votre compte GitHub correspond à la clé privée donnée. Si les clés correspondent, le serveur accorde l'accès, établissant un crypté et sécurisé connexion pour la communication.
Configuration de SSH pour GitHub
Dans cette section, vous verrez comment configurer SSH pour l'authentification avec GitHub.
1. Génération d'une paire de clés SSH
Le processus de génération d'une paire de clés SSH est la première étape vers l'utilisation de SSH pour l'authentification.
- Ouvrez votre terminal ou invite de commande.
- Exécutez la commande suivante pour générer une nouvelle paire de clés SSH :
ssh-keygen -t rsa -b 4096 -C "[email protected]"
- Vous serez invité à entrer un emplacement de fichier pour enregistrer la paire de clés. Presse Entrer pour accepter l'emplacement par défaut (~/.ssh/id_rsa) ou spécifiez un emplacement personnalisé.
> Génération de la paire de clés rsa publique/privée.
> Saisir le fichier dansqui pour enregistrer la clé (/home/vagrant/.ssh/id_rsa) : - Ensuite, il vous sera demandé d'entrer une phrase de passe. Bien que facultatif, l'ajout d'une phrase secrète constitue un niveau de sécurité supplémentaire. Assurez-vous de vous souvenir de votre phrase de passe.
> Entrez la phrase de passe (vide pour pas de mot de passe):
> Saisissez à nouveau la même phrase de passe : - Après avoir généré la paire de clés, vous devriez voir deux fichiers à l'emplacement spécifié. id_rsa (clé privée) et id_rsa.pub (Clé publique).
> Votre identification a été enregistrée dans /home/vagrant/.ssh/id_rsa.
> Votre clé publique a été enregistrée dans /home/vagrant/.ssh/id_rsa.pub. - À la fin, l'empreinte digitale des clés et l'image aléatoire sont affichées.
- Enfin, vous aurez besoin du contenu de la clé publique à ajouter à GitHub. Exécutez la commande suivante pour obtenir le contenu :
chat ~/.ssh/id_rsa.pub
Assurez-vous de spécifier le chemin (~/.ssh/id_rsa.pub dans mon cas) que vous avez utilisé lors de la création des clés.
Copiez le contenu dans un emplacement sûr et temporaire pour une utilisation ultérieure.
2. Ajouter la clé publique à GitHub
Maintenant que vous avez généré une paire de clés SSH, vous devez ajouter la clé publique à votre compte GitHub.
- Connectez-vous à votre compte GitHub et accédez à votre compte Paramètres.
- Cliquer sur Clés SSH et GPG situé dans la barre latérale gauche.
- Cliquer sur Nouvelle clé SSH.
- Donnez à votre clé SSH un Titre.
- Collez le contenu de la clé publique dans le Clé champ.
- Enfin, cliquez sur le Ajouter une clé SSH pour enregistrer la clé SSH sur votre compte GitHub.
Vous avez réussi à exporter la clé publique vers votre compte GitHub avec ceux-ci.
3. Configuration d'un agent SSH
Un agent SSH est un programme qui aide à gérer les clés SSH et fournit un moyen sécurisé de les stocker et de les utiliser. Il agit comme un intermédiaire entre votre machine locale et le serveur distant lors de l'authentification SSH. Cela vous permet de gérer plusieurs clés SSH pour différents comptes GitHub.
- Assurez-vous que l'agent SSH est en cours d'exécution.
$ eval"$(ssh-agent -s)"
> N° de l'agent 2757 - Ajoutez la clé privée à l'agent SSH.
$ ssh-add ~/.ssh/id_rsa
> Entrez la phrase de passe pour /home/vagrant/.ssh/id_rsa:
> Identité ajoutée: /home/vagrant/.ssh/id_rsa (/home/vagrant/.ssh/id_rsa)
Vous avez configuré avec succès un agent SSH pour gérer vos clés.
4. Test de la connexion SSH
Vous pouvez maintenant tester pour vérifier que votre connexion SSH est correctement configurée et vous pouvez vous authentifier auprès de GitHub à l'aide de SSH.
- Exécutez la commande ci-dessous pour tester la connexion SSH à GitHub ;
si tout va bien, vous verrez un avertissement concernant l'empreinte digitale. Confirmez l'empreinte digitale et tapez Oui continuer.ssh -T [email protected]
> L'authenticité de l'hôte 'github.com (140.92.130.4)' peut't être établi.
> L'empreinte digitale de la clé ECDSA est SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
> Êtes-vous sûr de vouloir continuer connexion (oui/non) ? - Lors de la frappe Oui, vous verrez une sortie similaire à celle ci-dessous.
> Avertissement: Ajouté définitivement 'github.com, 140.92.130.4' (ECDSA) à la liste des hôtes connus.
> Salut princewillingoo! Toi'ai réussi à s'authentifier, mais GitHub ne fournit pas d'accès au shell.
Cela montre que l'authentification a réussi.
Gestion des référentiels avec SSH
La configuration de SSH vous permet de gérer vos référentiels sans avoir à vous soucier des problèmes de mots de passe et de jetons d'accès.
Définition de l'URL distante
git à distance ensemble-url origine [email protected] :/.git
Cloner un dépôt
git cloner [email protected] :/.git
Pousser les modifications vers un référentiel
git push origine
Extraction des modifications d'un référentiel
git pull origine
Avantages de SSH sur l'authentification par mot de passe
L'utilisation de SSH pour l'authentification offre plusieurs avantages notables par rapport aux méthodes d'authentification traditionnelles basées sur un mot de passe. Ceci comprend:
- L'authentification SSH élimine le besoin de mots de passe, réduisant ainsi le risque de vol d'informations d'identification.
- L'utilisation de clés cryptographiques le rend plus immunisé contre attaques par force brute par rapport aux mots de passe.
- Si votre clé privée est compromise, vous pouvez la révoquer et la remplacer, rendant la clé compromise inutile.
Pour cette raison, l'authentification SSH tend à être une meilleure option par rapport à l'authentification par mot de passe.
Meilleures pratiques et dépannage
Pour garantir une configuration SSH fluide et sécurisée, il est nécessaire de suivre les meilleures pratiques et d'être conscient des problèmes courants qui peuvent survenir et des moyens de les résoudre.
- Définissez toujours une phrase de passe pour créer une couche de sécurité supplémentaire.
- Pratiquez la rotation et les sauvegardes fréquentes des clés.
- Confirmez chaque étape pour éviter les erreurs d'autorisation ou la configuration incorrecte de l'agent SSH.
En adhérant à ces bonnes pratiques, vous pouvez utiliser en toute confiance l'authentification SSH pour GitHub.
La polyvalence de SSH
SSH est largement utilisé dans d'autres domaines pour gérer à distance les serveurs, les microcontrôleurs et les périphériques réseau car il permet un accès sécurisé à l'interface de ligne de commande (CLI), permettant aux utilisateurs d'effectuer différentes tâches, de configurer les paramètres, de transférer des fichiers et de dépanner questions.