Je sais comment fournir un nom d'utilisateur et un mot de passe à une demande 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 fonctionné.
Réponses:
D'après le commentaire de Michael Scharf:
Vous pouvez omettre le mot de passe pour qu'il ne soit pas enregistré dans votre fichier d'historique Bash:
Il vous demandera votre mot de passe.
Alternativement, vous pouvez utiliser:
Cette méthode a fonctionné pour moi à partir d'un référentiel GitHub.
la source
git clone https://[email protected]/username/repository.git
. git vous le demandera et il ne sera pas enregistré dans .git / config ni dans votre historique bashLe
user@host:path/to/repo
format indique à Git d'utiliser ssh pour se connecterhost
avec un nom d'utilisateuruser
. Degit help clone
: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 tempsSi 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 dansssh-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
etbar
. Votre clé ssh pourfoo
is~/.ssh/foo_github_id
et votre clé ssh forbar
is~/.ssh/bar_github_id
. Vous souhaitez accéder[email protected]:foo/foo.git
avec votrefoo
compte et[email protected]:bar/bar.git
avec votrebar
compte. Vous ajouteriez ce qui suit à votre~/.ssh/config
:Vous devez ensuite cloner les deux référentiels comme suit:
Éviter complètement ssh
Certains services offrent un accès HTTP comme alternative à ssh:
GitHub:
Gitorious:
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: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.la source
Dans les commentaires de la réponse de @ Bassetassen , @plosco a mentionné que vous pouvez au moins utiliser
git clone https://<token>@github.com/username/repository.git
pour cloner à partir de GitHub. Je pensais que je développerais la façon de procéder, au cas où quelqu'un trouverait cette réponse comme je l'ai fait en essayant d'automatiser un clonage.GitHub a un guide très pratique sur la façon de le faire, mais il ne couvre pas ce qu'il faut faire si vous souhaitez tout inclure sur une seule ligne à des fins d'automatisation. Il avertit que l' ajout du jeton à l'URL du clone le stockera en texte brut dans
.git/config
. C'est évidemment un risque de sécurité pour presque tous les cas d'utilisation, mais comme je prévois de supprimer le dépôt et de révoquer le jeton lorsque j'aurai terminé, je m'en fiche.1. Créez un jeton
GitHub a un guide complet ici sur la façon d'obtenir un jeton, mais voici le TL; DR.
2. Clonez le référentiel
Identique à la commande que @plosco a donnée,,
git clone https://<token>@github.com/<username>/<repository>.git
remplacez simplement<token>
,<username>
et<repository>
par toutes vos informations.Si vous voulez le cloner dans un dossier spécifique, insérez simplement l'adresse du dossier à la fin comme ceci:,
git clone https://<token>@github.com/<username>/<repository.git> <folder>
où<folder>
est, vous l'avez deviné, le dossier dans lequel le cloner! Vous pouvez bien sûr utiliser.
,..
,~
, etc. ici comme vous pouvez ailleurs.3. Ne laisser aucune trace
Tout cela peut ne pas être nécessaire, selon la sensibilité de ce que vous faites.
rm -rf <folder>
.git remote remove origin
ou simplement supprimer le jeton en exécutantgit remote set-url origin https://github.com/<username>/<repository.git>
.Notez que je ne suis pas un pro, donc ce qui précède peut ne pas être sécurisé dans le sens où aucune trace ne serait laissée pour une sorte de travail médico-légal.
la source
https://<token>@github.com
n'a pas été acceptée avec mon portail, j'ai dû utiliserhttps://oauth2:<token>@github.com
Bien qu'il existe de nombreuses réponses, je suis confronté au problème répété lorsque le nom d'utilisateur ou le mot de passe contient des caractères spéciaux.
L'URL code votre nom d'utilisateur et votre mot de passe pour git, puis les utilise dans le cadre de l'URL elle-même (lorsqu'il n'y a aucun problème de sécurité).
Dites, valeur encodée URL du nom d'utilisateur
et valeur codée URL du mot de passe
L'URL de votre clone GIT ressemblerait alors à:
J'espère que cela t'aides.
Au cas où, vous voulez encoder l'URL en ligne: https://www.urlencoder.org/
la source
J'ai résolu ce problème de la manière suivante:
la source
Sous Windows , les étapes suivantes doivent déclencher à nouveau la fenêtre de connexion GitHub lors de l'
git clone
ing:la source
Suivez ces arguments pour remplacer par vos cas spéciaux s'ils créent un problème:
! # $ & '() * +, /:; =? @ []
% 21% 23% 24% 26% 27% 28% 29% 2A% 2B% 2C% 2F% 3A% 3B% 3D% 3F% 40% 5B% 5D
Ainsi, par exemple-
URL réelle: https: // usern @ me: p @ ssword @ git / reponame.git
URL de la solution à utiliser: https: // usern% 40me: p%40ssword@git/reponame.git
la source
Exécutez-le d'abord avant de cloner de la même manière, devrait être corrigé!
la source
C'est une excellente question sur le débordement de pile, et les réponses ont été très instructives, de sorte que j'ai pu résoudre un problème ennuyeux que j'ai rencontré récemment.
L'organisation pour laquelle je travaille utilise le
Atlassian's BitBucket
produit (pas Github), essentiellement leur version de GitHub afin que les référentiels puissent être sécurisés complètement sur site. Je rencontrais un problème similaire à @coordinate, en ce sens que mon mot de passe était requis pour un nouveau référentiel que j'ai extrait. Mes informations d'identification avaient été enregistrées globalement pour tous lesBitBucket
projets, donc je ne sais pas ce qui a provoqué la perte des informations d'identification.En bref, j'ai pu entrer la commande GIT suivante (en fournissant uniquement mon nom d'utilisateur), qui a ensuite invité le gestionnaire d'informations d'identification de Git à me demander le mot de passe, que j'ai ensuite pu enregistrer.
REMARQUE: les sous-chemins de répertoire entre crochets se réfèrent simplement à des références internes et varieront pour vous!
la source
Si vous utilisez
http/https
et que vous cherchez à AUTOMATIQUER ENTIÈREMENT le processus sans nécessiter aucune entrée utilisateur ou aucune invite utilisateur (par exemple: dans un pipeline CI / CD), vous pouvez utiliser l'approche suivante en tirant partigit credential.helper
où vous pouvez choisir de définir la
ALICE_GITHUB_PASSWORD
variable d'environnement à partir d'une commande shell précédente ou de votre configuration de pipeline, etc.Rappelez-vous que git-credential-helper basé sur "store" stocke les mots de passe et les valeurs en texte brut. Assurez-vous donc que votre token / mot de passe dispose d'autorisations très limitées.
Maintenant, utilisez simplement https: //[email protected]/my_repo.git partout où votre système automatisé doit récupérer le dépôt - il utilisera les informations d'identification pour
alice
ingithub.com
as store par git-credential-helper.la source