web-dev-qa-db-fra.com

Comment faire en sorte que git utilise ssh par défaut et non https pour les nouveaux référentiels

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?

170
nikhil

Configurer la branche Origin d'un référentiel pour qu'elle soit SSH

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

Modifier un référentiel préexistant

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

Plus d'informations sur le commutateur SSH-HTTPS

264
David Cain

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.

141
Trevor Austin

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/
52
MoOx

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]
4
rofrol

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.

2
Mike Lyons