objectif d'apprentissage :
Maîtriser les connaissances de Git
Contenu d'apprentissage :
1. La différence entre HTTPS et SSH 2. Étapes pour une configuration complète des clés SSH et des clés publiques 3. Résolution des conflits SSH pour plusieurs comptes github 4. Ports SSH bloqués par les pare-feutemps d'étude:
2022.2.10Sortie d'apprentissage :
1. La différence entre HTTPS et SSH
Il existe deux manières de cloner un projet dans git : HTTPS et SSH. Les différences entre elles sont les suivantes :
HTTPS : peu importe qui vous êtes, vous pouvez simplement cloner l'URL, mais vous devez vérifier le nom d'utilisateur et le mot de passe lors de la transmission ;
SSH : vous devez être le propriétaire ou l'administrateur du projet de clonage, et vous devez ajouter une clé SSH avant le clone.
Lorsque SSH pousse, vous n'avez pas besoin d'entrer le nom d'utilisateur. Si un mot de passe est défini lors de la configuration de la clé SSH, vous devez entrer le mot de passe. Sinon, vous n'avez pas besoin d'entrer le mot de passe directement.
Étapes pour utiliser la clé SSH dans git : Vérifiez si la clé SSH existe sur l'ordinateur : $ cd ~/.ssh$ ls S'il existe un
fichier id_rsa.pub ou id_dsa.pub, cela signifie que le fichier existe et saute l'étape de création d'une clé SSH. Créer une clé SSH pour mettre le SSH public sur le référentiel distant
2. Configurez complètement les étapes de la clé SSH et de la clé publique
S'il vous plaît voir mon autre article dans cette colonne
3. Résolution des conflits SSH pour plusieurs comptes github
github utilise SSH pour se connecter au client. S'il s'agit d'un seul utilisateur (d'abord), après avoir généré la paire de clés, enregistrez la clé publique sur github, et
le client SSH envoie la clé privée locale (par défaut ~/.ssh/id_rsa) au serveur pour vérification à chaque fois qu'il se connecte .
Dans le cas d'un utilisateur unique, la clé publique stockée sur le serveur connecté et la clé privée transmise sont naturellement appariées.
Mais s'il est multi-utilisateur (premier, second), lorsque nous nous connectons au compte du second, le
second enregistre sa propre clé publique, mais le client SSH envoie toujours la clé privée par défaut, qui est la clé privée du premier, alors cette vérification est naturellement impossible .passer à travers.
Cependant, pour réaliser la commutation de clé SSH sous plusieurs comptes, vous pouvez effectuer une configuration côté client.
Tout d'abord, cd vers ~/.ssh et utilisez ssh-keygen -t -rsa -C '[email protected]' pour générer une nouvelle clé SSH : id_rsa_second, et ajoutez la nouvelle clé publique SSH à github après la génération.
ssh-keygen -t -rsa -C '[email protected]'
Par défaut, SSH ne lira que id_rsa, donc pour que SSH reconnaisse la nouvelle clé privée, elle doit être ajoutée à l'agent SSH
ssh-add ~/.ssh/id_rsa_second
Si la commande signale une erreur : Could not open a connection to your authentication agent
. Impossible de se connecter à l'agent ssh, exécutez ssh-agent bash
la commande, puis exécutez la ssh-add
commande.
Après avoir terminé les étapes ci-dessus, créez un fichier de configuration dans le répertoire ~/.ssh, qui est utilisé pour configurer le serveur correspondant à la clé privée. Le contenu est le suivant :
Default github user(first@mail.com)
Host github.com
HostName github.com
User git
IdentityFile C:/Users/username/.ssh/id_rsa
#second user([email protected])
Host github-second
HostName github.com
User git
IdentityFile C:/Users/username/.ssh/id_rsa_second
Une fois la configuration terminée, lors de la connexion à un référentiel github avec un compte autre que le compte par défaut, l'adresse du référentiel distant doit être modifiée en conséquence. Par exemple, lors de l'ajout d'un test de référentiel sous le deuxième compte, vous devez l'ajouter comme ce:
git remote add test git@github-second:second/test.git
#并非原来的[email protected]:second/test.git
De cette façon, chaque connexion utilisera id_rsa_second pour se connecter au serveur. Jusqu'ici, vous avez terminé !
Remarque : github obtient le compte github et affiche les informations sur l'auteur en fonction de l'utilisateur.email du fichier de configuration. Par conséquent, pour les utilisateurs disposant de plusieurs comptes, vous devez vous rappeler de remplacer user.email par l'e-mail correspondant ([email protected]).
4. Résoudre le problème que le port SSH est bloqué par le pare-feu
Configurez SSH pour utiliser le port HTTPS 403
Dans le LAN, le port SSH 22 peut être bloqué par le pare-feu, vous pouvez configurer SSH pour utiliser le port HTTPS 403.
Tester si le port HTTPS est disponible
$ ssh -T -p 443 git@ssh.github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.
Modifiez le fichier de configuration SSH ~/.ssh/config comme suit :
Host github.com
Hostname ssh.github.com
Port 443
Tester si la configuration est réussie
$ ssh -T git@github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.
5. Cloner des projets privés via HTTPS ou SSH
À l'heure actuelle, les projets privés de github sont disponibles gratuitement depuis un certain temps, mais lorsque vous utilisez la méthode de clonage ordinaire pour télécharger en local, vous constaterez que le clonage échoue et qu'un message d'erreur s'affiche.
remote: Repository not found.
fatal: repository ‘https://github.com/github-username/github-template-name.git’ not found
Normalement, le format de lien du clone est généralement
https://github.com/github-username/github-template-name.git
Ensuite, lorsque vous souhaitez cloner votre propre projet privé localement, pour la sécurité du projet privé, vous devez ajouter un compte et un mot de passe pour vérification
git clone https://github-username:github-password@github.com/github-username/github-template-name.git
Lors du clonage, ajoutez github-username:github-password après https://, puis le lien @project peut cloner le projet normalement. C'est un moyen relativement simple de cloner votre propre projet privé.
Certains logiciels graphiques Git peuvent vous demander de saisir un compte et un mot de passe, ce qui est plus pratique. Par exemple
, entrez le lien HTTPS de l'entrepôt privé, cliquez sur cloner, la boîte de saisie apparaîtra automatiquement, vous permettant d'entrer le mot de passe du compte, ce qui est plus convivial.
Cependant, SourceTree, le logiciel
, ne peut pas cloner en saisissant des liens HTTPS. Comme il s'agit d'un référentiel privé
, la solution consiste à se connecter au compte distant dans SourceTree
pour extraire le référentiel privé.
Alternativement, l'utilisation d'un lien SSH peut également répondre aux exigences. Étant donné que SSH correspond à la clé privée et à la clé publique, il n'est pas nécessaire de saisir un compte et un mot de passe