Je sais comment fournir un nom d'utilisateur et un mot de passe à une requête HTTPS comme celle-ci:
git clone https://username:password@remote
Mais j'aimerais savoir comment fournir un nom d'utilisateur et un mot de passe à la télécommande comme ceci:
git clone [email protected]
J'ai essayé comme ça:
git clone username:password@[email protected]
git clone git@username:[email protected]
git clone [email protected]@username:password
Mais ils n'ont pas travaillé.
Utilisation:
git clone https://username:[email protected]/username/repository.git
Cette méthode a fonctionné pour moi depuis un dépôt GitHub.
Basé sur le commentaire de Michael Scharf:
Vous pouvez omettre le mot de passe pour qu'il ne soit pas enregistré dans votre fichier historique Bash:
git clone https://[email protected]/username/repository.git
Il vous demandera votre mot de passe.
Le format _user@Host:path/to/repo
_ indique à Git d'utiliser ssh pour se connecter à Host
avec le 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 précédant le _@
_ est le nom d'utilisateur et la méthode d'authentification (mot de passe, clé publique, etc.) est déterminée par ssh et non par Git. Git n'a aucun moyen de passer un mot de passe à SSH, car SSH pourrait même ne pas utiliser un mot de passe en fonction de la configuration du serveur distant.
ssh-agent
_ pour éviter de taper des mots de passe tout le tempsSi vous ne voulez pas taper votre mot de passe ssh tout le temps, la solution typique est de générer une paire de clés publique/privée , mettez la clé publique dans votre _~/.ssh/authorized_keys
_ fichier sur le serveur distant et chargez votre clé privée dans ssh-agent
. Voir aussi Configuration de Git sur SSH pour se connecter une seule fois , page d'aide de GitHub sur les phrases secrètes de la clé ssh , documentation de gitolite ssh , et ssh de Heroku documentation des clés .
Si vous avez plusieurs comptes à un endroit comme GitHub ou Heroku, vous aurez plusieurs clés SSH (au moins une par compte). Pour choisir le compte sur lequel vous souhaitez vous connecter, vous devez indiquer à ssh quelle clé privée utiliser .
Par exemple, supposons que vous ayez deux comptes GitHub: foo
et bar
. Votre clé ssh pour foo
est _~/.ssh/foo_github_id
_ et votre clé ssh pour bar
est _~/.ssh/bar_github_id
_. Vous souhaitez accéder à _[email protected]:foo/foo.git
_ avec votre compte foo
et à _[email protected]:bar/bar.git
_ avec votre compte bar
. 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 pouvez alors 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
_
Certains services offrent un accès HTTP comme alternative à ssh:
GitHub:
_https://username:[email protected]/username/repository.git
_
Gitorious:
_https://username:[email protected]/project/repository.git
_
Heroku: Voir cet article de support .
WARNING: Si vous ajoutez votre mot de passe à l'URL de clone, Git enregistrera votre mot de passe en texte brut dans _.git/config
_. Pour stocker votre mot de passe en toute sécurité 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
_
En raison de ce qui précède, Git vous demandera votre mot de passe toutes les 15 minutes (par défaut). Voir git help credentials
pour plus de détails.
Dans les commentaires de @ Bassetassen answer , @plosco a mentionné que vous pouvez utiliser au moins git clone https://<token>@github.com/username/repository.git
pour cloner à partir de GitHub. Je pensais que j'allais préciser comment faire cela, au cas où quelqu'un trouverait cette réponse comme je l'ai fait en essayant d'automatiser un certain clonage.
GitHub a un guide très pratique sur la marche à suivre, mais il ne couvre pas la marche à suivre si vous souhaitez tout inclure sur une seule ligne à des fins d'automatisation. Il avertit que l'ajout du jeton à l'URL de clonage le stockera en texte brut dans .git/config
. Ceci est évidemment un risque de sécurité pour presque tous les cas d'utilisation, mais puisque je prévois de supprimer le référentiel et de révoquer le jeton lorsque j'aurai terminé, je m'en fiche.
GitHub a un guide complet ici sur la façon d'obtenir un jeton, mais voici le TL; DR.
Identique à la commande donnée par @plosco, git clone https://<token>@github.com/<username>/<repository>.git
, il vous suffit de remplacer <token>
, <username>
et <repository>
par vos informations personnelles.
Si vous voulez le cloner dans un dossier spécifique, insérez simplement l'adresse du dossier à la fin, comme suit: git clone https://<token>@github.com/<username>/<repository.git> <folder>
, où <folder>
est, vous l'avez deviné, le dossier vers lequel le cloner! Vous pouvez bien sûr utiliser .
, ..
, ~
, etc. ici comme vous pouvez le faire ailleurs.
Tout cela ne sera peut-être pas nécessaire, tout dépend de la sensibilité de votre travail.
rm -rf <folder>
.git remote remove Origin
ou simplement supprimer le jeton en exécutant git remote set-url Origin https://github.com/<username>/<repository.git>
.Notez que je ne suis pas un pro, ce qui précède peut ne pas être sécurisé dans le sens où aucune trace ne serait laissée pour un quelconque type de travail médico-légal.
Bien qu'il existe de nombreuses réponses, je suis moi-même confronté à ce problème répété lorsque le nom d'utilisateur ou le mot de passe contient des caractères spéciaux.
URL encodez votre nom d'utilisateur et votre mot de passe pour git, puis utilisez-les dans le cadre de l'URL elle-même (en l'absence de problème de sécurité).
Dites, valeur du nom d'utilisateur encodée en URL
'utilisateur + 1' est l'utilisateur% 2B1
et valeur encodée du mot de passe par l'URL
'Welcome @ 1234' est Welcome% 401234
Ensuite, votre URL de clone GIT ressemblerait à ceci:
git clone https://user%2B1:Welcome%401234@actual-git-url-for-the-repo
fonctionne parfaitement, alors quegit clone https: // utilisateur + 1: Bienvenue @ 1234 @ actual-git-url-pour-le-repo vous donne 403 erreurs
J'espère que cela t'aides.
Juste au cas où, voulez encoder URL en ligne: https://www.urlencoder.org/
git config --global core.askpass
Exécutez cette première avant de cloner de la même manière, devrait être corrigé!