Le user@host:path/to/repo
format indique à Git d'utiliser ssh pour se connecter host
avec un nom d'utilisateur user
. De git help clone
:
Une autre syntaxe de type scp peut également être utilisée avec le protocole ssh:
[user@]host.xz:path/to/repo.git/
La partie avant le @
est le nom d'utilisateur, et la méthode d'authentification (mot de passe, clé publique, etc.) est déterminée par ssh, pas Git. Git n'a aucun moyen de transmettre un mot de passe à ssh, car ssh peut même ne pas utiliser de mot de passe selon la configuration du serveur distant.
Utilisez ssh-agent
pour éviter de taper des mots de passe tout le temps
Si vous ne voulez pas taper votre mot de passe ssh tout le temps, la solution typique consiste à générer une paire de clés publique / privée , à mettre la clé publique dans votre ~/.ssh/authorized_keys
fichier sur le serveur distant et à charger votre clé privée dans ssh-agent
. Voir également Configurer Git sur SSH pour se connecter une fois , la page d'aide de GitHub sur les phrases secrètes des clés ssh , la documentation ssh de gitolite et la documentation des clés ssh de Heroku .
Choisir entre plusieurs comptes sur GitHub (ou Heroku ou ...)
Si vous avez plusieurs comptes à un endroit comme GitHub ou Heroku, vous aurez plusieurs clés ssh (au moins un par compte). Pour choisir le compte sous lequel vous souhaitez vous connecter, vous devez indiquer à ssh quelle clé privée utiliser .
Par exemple, supposons que vous disposiez de deux comptes GitHub: foo
et bar
. Votre clé ssh pour foo
is ~/.ssh/foo_github_id
et votre clé ssh for bar
is ~/.ssh/bar_github_id
. Vous souhaitez accéder git@github.com:foo/foo.git
avec votre foo
compte et git@github.com:bar/bar.git
avec votre bar
compte. Vous ajouteriez ce qui suit à votre ~/.ssh/config
:
Host gh-foo
Hostname github.com
User git
IdentityFile ~/.ssh/foo_github_id
Host gh-bar
Hostname github.com
User git
IdentityFile ~/.ssh/bar_github_id
Vous devez ensuite cloner les deux référentiels comme suit:
git clone gh-foo:foo/foo.git # logs in with account foo
git clone gh-bar:bar/bar.git # logs in with account bar
Éviter complètement ssh
Certains services offrent un accès HTTP comme alternative à ssh:
GitHub:
https://username:password@github.com/username/repository.git
Gitorious:
https://username:password@gitorious.org/project/repository.git
Heroku: Voir cet article de support .
AVERTISSEMENT : l'ajout de votre mot de passe à l'URL du clone obligera Git à stocker votre mot de passe en texte brut dans .git/config
. Pour stocker en toute sécurité votre mot de passe lorsque vous utilisez HTTP, utilisez un assistant d'identification. Par exemple:
git config --global credential.helper cache
git config --global credential.https://github.com.username foo
git clone https://github.com/foo/repository.git
Ce qui précède amènera Git à demander votre mot de passe toutes les 15 minutes (par défaut). Voir git help credentials
pour plus de détails.