Ces jours-ci, lorsque je crée un nouveau référentiel sur GitHub sur la page de configuration, je reçois:
git remote add Origin https://github.com/nikhilbhardwaj/abc.git
git Push -u Origin master
Et chaque fois que je dois pousser un commit, je dois entrer mon nom d'utilisateur et mon mot de passe GitHub.
Je peux changer cela manuellement
[email protected]:nikhilbhardwaj/abc.git
dans le .git/config
. Je trouve cela assez irritant - y at-il un moyen de configurer git pour utiliser SSH par défaut?
La page de configuration du référentiel GitHub est juste une liste de commandes suggérées (et GitHub suggère maintenant d’utiliser le protocole HTTPS). À moins que vous n'ayez un accès administratif au site de GitHub, je ne connais aucun moyen de modifier les commandes suggérées.
Si vous préférez utiliser le protocole SSH, ajoutez simplement une branche distante comme ceci (c'est-à-dire utilisez cette commande à la place de la commande suggérée par GitHub). Pour modifier une branche existante, voir la section suivante.
$ git remote add Origin [email protected]:nikhilbhardwaj/abc.git
Comme vous le savez déjà, pour basculer un référentiel préexistant vers SSH au lieu de HTTPS, vous pouvez modifier l’URL distante dans votre fichier .git/config
.
[remote "Origin"]
fetch = +refs/heads/*:refs/remotes/Origin/*
-url = https://github.com/nikhilbhardwaj/abc.git
+url = [email protected]:nikhilbhardwaj/abc.git
Un raccourci consiste à utiliser la commande set-url
:
$ git remote set-url Origin [email protected]:nikhilbhardwaj/abc.git
GitHub
git config --global url.ssh://[email protected]/.insteadOf https://github.com/
BitBucket
git config --global url.ssh://[email protected]/.insteadOf https://bitbucket.org/
Cela indique à git de toujours utiliser SSH au lieu de HTTPS lors de la connexion à GitHub/BitBucket, de sorte que vous vous authentifierez par certificat par défaut au lieu de vous demander un mot de passe.
Le la réponse fournie par Trevor est correcte .
Mais voici ce que vous pouvez directement ajouter dans votre .gitconfig
:
# Enforce SSH
[url "ssh://[email protected]/"]
insteadOf = https://github.com/
[url "ssh://[email protected]/"]
insteadOf = https://gitlab.com/
[url "ssh://[email protected]/"]
insteadOf = https://bitbucket.org/
Si vous voulez plusieurs clés pour différents hôtes, procédez comme suit:
Créer un script
#!/usr/bin/env bash
email="$1"
hostname="$2"
hostalias="$hostname"
keypath="$HOME/.ssh/${hostname}_rsa"
ssh-keygen -t rsa -C $email -f $keypath
if [ $? -eq 0 ]; then
cat >> ~/.ssh/config <<EOF
Host $hostalias
Hostname $hostname *.$hostname
User git
IdentitiesOnly yes
IdentityFile $keypath
EOF
fi
et l'exécuter comme
bash script.sh [email protected] github.com
Changer votre URL distante
git remote set-url Origin [email protected]:user/foo.git
Ajoutez le contenu de ~/.ssh/github.com_rsa.pub
à vos clés ssh sur github.com
Vérifier la connexion
ssh -T [email protected]
Vous avez peut-être accidentellement cloné le référentiel dans https au lieu de ssh. J'ai commis cette erreur plusieurs fois sur github. Assurez-vous de copier le lien ssh en premier lieu lors du clonage, au lieu du lien https.