Question Comment fournir le nom d'utilisateur et mot de passe lors de l'exécution "git clone git@remote.git"?


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 je voudrais savoir comment fournir un nom d'utilisateur et un mot de passe à la télécommande comme ceci:

git clone git@remote.git

J'ai essayé comme ça:

git clone username:password@git@remote.git
git clone git@username:password@remote.git
git clone git@remote.git@username:password

Mais ils n'ont pas travaillé.


483
2018-04-07 12:05


origine


Réponses:


git clone https://username:password@github.com/username/repository.git

Cette façon a fonctionné pour moi depuis un dépôt github

Modifier en fonction du commentaire de Michael_Scharf:

Vous pouvez laisser le mot de passe pour qu'il ne soit pas enregistré dans votre fichier d'historique bash:

git clone https://username@github.com/username/repository.git

Il vous demandera votre mot de passe


727
2018-04-07 12:25



le user@host:path/to/repo format indique à Git d'utiliser ssh pour se connecter à host avec identifiant 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 la @ est le nom d'utilisateur, et la méthode d'authentification (mot de passe, clé publique, etc.) est déterminée par ssh, pas par Git. Git n'a aucun moyen de passer un mot de passe à ssh, car ssh pourrait même ne pas utiliser de mot de passe en fonction de la configuration du serveur distant.

Utilisation 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 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. Regarde aussi Configurer Git sur SSH pour se connecter une fois, La page d'aide de GitHub sur les mots de passe clés ssh, la documentation ssh de gitolite, et Documentation des clés ssh de Heroku.

Choisir entre plusieurs comptes chez GitHub (ou Heroku ou ...)

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 auquel vous souhaitez vous connecter, vous devez dire à 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 voulez 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 clonez ensuite 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 fournissent 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.

ATTENTION: Si vous ajoutez votre mot de passe à l'URL de clonage, Git stockera votre mot de passe en clair 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

Ce qui précède obligera Git à vous demander votre mot de passe toutes les 15 minutes (par défaut). Voir git help credentials pour plus de détails.


157
2018-04-07 16:16



Dans les commentaires de @ Bassetassen répondre, @plosco mentionné que vous pouvez utiliser git clone https://<token>@github.com/username/repository.git cloner à partir de GitHub à tout le moins. Je pensais que je m'étendrais sur la façon de le faire, au cas où quelqu'un trouverait cette réponse comme je l'ai fait en essayant d'automatiser le clonage.

GitHub a un très utile Guide sur la façon de le faire, mais il ne couvre pas ce qu'il faut faire si vous voulez tout inclure dans une ligne à des fins d'automatisation. Il prévient que l'ajout du jeton à l'URL clone le stockera en clair dans  .git/config. C'est évidemment un risque de sécurité pour presque tous les cas d'utilisation, mais puisque je prévois de supprimer le repo et de révoquer le jeton quand j'ai terminé, je m'en fous.

1. Créez un jeton

GitHub a un guide entier ici sur la façon d'obtenir un jeton, mais voici le TL; DR.

  1. Aller à Paramètres> Paramètres du développeur> Jetons d'accès personnels (voici un lien direct)
  2. Cliquez sur "Générer un nouveau jeton" et entrez votre mot de passe à nouveau. (hIl y a un autre lien direct)
  3. Définissez une description / nom pour cela, vérifiez l'autorisation «repo» et cliquez sur le bouton «Générer un jeton» en bas de la page.
  4. Copiez votre nouveau jeton avant de quitter la page

2. Cloner le Repo

Identique à la commande @plosco, git clone https://<token>@github.com/<username>/<repository>.git, remplacez simplement <token>, <username> et <repository> avec quelle que soit votre information est.

Si vous voulez le cloner dans un dossier spécifique, il suffit d'insérer 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 pour le cloner! Vous pouvez bien sûr utiliser ., .., ~, etc. ici comme vous pouvez ailleurs.

3. Ne laissez aucune trace

Tout cela n'est peut-être pas nécessaire, selon la sensibilité de ce que vous faites.

  • Vous ne voulez probablement pas laisser traîner ce jeton si vous n'avez pas l'intention de l'utiliser pendant un certain temps, alors revenez à la page des jetons et appuyez sur le bouton Supprimer à côté de lui.
  • Si vous n'avez plus besoin du repo, supprimez-le rm -rf <folder>.
  • Si vous avez encore besoin du repo, mais n'avez pas besoin de l'automatiser à nouveau, vous pouvez retirer la télécommande en faisant git remote remove origin ou simplement supprimer le jeton en cours d'exécution git remote set-url origin https://github.com/<username>/<repository.git>.
  • Effacez votre historique bash pour vous assurer que le jeton ne reste pas connecté. Il y a plusieurs façons de le faire, voir cette question et cette question. Cependant, il peut être plus facile de ne faire précéder toutes les commandes ci-dessus d'un espace afin d'éviter qu'elles soient stockées pour commencer.

Notez que je ne suis pas un pro, donc ce qui précède peut ne pas être sûr dans le sens où aucune trace ne serait laissée à une sorte de travail médico-légal.


6
2018-05-05 18:56



J'ai résolu ce problème de la manière suivante:

enter image description here


3
2017-07-02 10:37