Je veux utiliser un push and pull automatiquement dans GitExtension , sans entrer à chaque fois mon utilisateur et mon mot de passe dans une invite.
Alors, comment puis-je enregistrer mes informations d'identification dans git?
Je veux utiliser un push and pull automatiquement dans GitExtension , sans entrer à chaque fois mon utilisateur et mon mot de passe dans une invite.
Alors, comment puis-je enregistrer mes informations d'identification dans git?
Réponses:
Courir
git config --global credential.helper store
puis
git pull
fournir un nom d'utilisateur et un mot de passe et ces détails seront ensuite mémorisés plus tard. Les informations d'identification sont stockées dans un fichier sur le disque, avec les autorisations du disque «uniquement lisibles / inscriptibles par l'utilisateur» mais toujours en texte clair.
Si vous souhaitez modifier le mot de passe ultérieurement
git pull
Échouera, car le mot de passe est incorrect, git supprime ensuite l'utilisateur + le mot de passe incriminé du ~/.git-credentials
fichier, alors réexécutez maintenant
git pull
pour fournir un nouveau mot de passe afin qu'il fonctionne comme précédemment.
Vous pouvez utiliser le git config
pour activer le stockage des informations d'identification dans git.
git config --global credential.helper store
Lors de l'exécution de cette commande, la première fois que vous tirez ou poussez à partir du référentiel distant, vous serez interrogé sur le nom d'utilisateur et le mot de passe.
Par la suite, pour les communications conséquentes avec le référentiel distant, vous n'avez pas à fournir le nom d'utilisateur et le mot de passe.
Le format de stockage est un .git-credentials
fichier, stocké en texte brut.
En outre, vous pouvez utiliser d'autres aides pour le git config credential.helper
cache de mémoire, à savoir:
git config credential.helper cache <timeout>
qui prend une option timeout parameter
, déterminant pour combien de temps les informations d'identification seront conservées en mémoire. À l'aide de l'assistant, les informations d'identification ne toucheront jamais le disque et seront effacées après le délai spécifié. La default
valeur est900 seconds (15 minutes).
AVERTISSEMENT : si vous utilisez cette méthode, les mots de passe de votre compte git seront enregistrés dansplaintext
format, par global .gitconfig file
exemple sous linux ce sera/home/[username]/.gitconfig
Si cela ne vous convient pas, utilisez ssh key
plutôt un pour vos comptes.
git config credential.helper cache
les mots de passe ne seront pas enregistrés dans un fichier, uniquement stockés en mémoire. Voir: git-scm.com/docs/git-credential-cache
Méthode recommandée et sécurisée: SSH
Créez une clé Gshub ssh. Accédez à github.com -> Paramètres -> Clés SSH et GPG -> Nouvelle clé SSH. Enregistrez maintenant votre clé privée sur votre ordinateur.
Ensuite, si la clé privée est enregistrée sous id_rsa dans le répertoire ~ / .ssh / , nous l'ajoutons pour l'authentification en tant que telle:
ssh-add -K ~/.ssh/id_rsa
Une méthode plus sûre: la mise en cache
Nous pouvons utiliser git-credential-store pour mettre en cache notre nom d'utilisateur et notre mot de passe pendant une période de temps. Entrez simplement ce qui suit dans votre CLI (terminal ou invite de commande):
git config --global credential.helper cache
Vous pouvez également définir le délai d'expiration (en secondes) comme tel:
git config --global credential.helper 'cache --timeout=3600'
Une méthode encore moins sécurisée
Git-credential-store peut également être utilisé, mais enregistre les mots de passe dans un fichier texte sur votre disque en tant que tel:
git config credential.helper store
Réponse obsolète - Rapide et peu sûr
Il s'agit d'une méthode non sécurisée de stockage de votre mot de passe en texte brut. Si quelqu'un prend le contrôle de votre ordinateur, votre mot de passe sera dévoilé!
Vous pouvez définir votre nom d'utilisateur et votre mot de passe comme ceci:
git config --global user.name "your username"
git config --global user.password "your password"
Dans Terminal, entrez les informations suivantes:
# Set git to use the credential memory cache
git config --global credential.helper cache
Par défaut, Git mettra en cache votre mot de passe pendant 15 minutes.
Pour modifier le délai d'expiration du cache de mot de passe par défaut, entrez les informations suivantes:
# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'
Depuis l' aide de GitHub
cache
pièce par store
. Ainsi, la commande complète sera: git config --global credential.helper store
. Notez que cela stockera votre mot de passe dans un fichier en texte ouvert (sans aucun cryptage, pour ainsi dire).
--timeout
paramètre?
Vous pouvez modifier le ~/.gitconfig
fichier pour stocker vos informations d'identification
sudo nano ~/.gitconfig
Qui devrait déjà avoir
[user]
email = your@email.com
user = gitUSER
Vous devez ajouter au bas de ce fichier.
[credential]
helper = store
La raison pour laquelle je recommande cette option est qu'elle est globale et si à tout moment vous devez supprimer l'option, vous savez où aller et la modifier.
UTILISEZ UNIQUEMENT CETTE OPTION SUR VOTRE ORDINATEUR PERSONNEL.
Ensuite, lorsque vous tirez | clone | entrez votre mot de passe git, en général, le mot de passe sera enregistré au ~/.git-credentials
format
https://GITUSER:GITPASSWORD@DOMAIN.XXX
O DOM DOMAIN.XXX POURRAIT ÊTRE GITHUB.COM | BITBUCKET.ORG | AUTRE
Voir les documents
Mettez simplement vos informations d'identification dans l'URL comme ceci:
https://Username
:Password
@github.com/myRepoDir/myRepo.git
Vous pouvez le stocker comme ceci:
git remote add myrepo https://Userna...
... exemple pour l' utiliser :
git push myrepo master
Maintenant, c'est pour lister les alias d'url:
git remote -v
... et que la commande pour supprimer l'un d'eux:
git remote rm myrepo
git@github.com:Username/myRepo.git
https
, non ssh
, donc une solution comme celle-ci peut être utile là-bas. Notez également que vous pouvez utiliser un jeton oauth, qui est légèrement plus sûr que votre mot de passe GitHub.
Pour le réglage global, ouvrez le terminal (de n'importe où) exécutez ce qui suit:
git config --global user.name "your username"
git config --global user.password "your password"
Par cela, tout dépôt git local que vous avez sur votre machine utilisera ces informations.
Vous pouvez configurer individuellement chaque repo en faisant:
exécutez ce qui suit:
git config user.name "your username"
git config user.password "your password"
Cela n'affecte que ce dossier (car votre configuration est locale).
--local
tag ajouté mais encore une fois rien ne se passe
Vous pouvez utiliser git-credential-store pour stocker vos mots de passe non chiffrés sur le disque, protégés uniquement par les autorisations du système de fichiers.
Exemple
$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
[several days later]
$ git push http://example.com/repo.git
[your credentials are used automatically]
Vous pouvez vérifier les informations d'identification stockées dans le fichier ~/.git-credentials
Pour plus d'informations, visitez git-credential-store - Aide pour stocker les informations d'identification sur le disque
Vous serez plus sûr si vous utilisez l'authentification SSH que l'authentification par nom d'utilisateur / mot de passe.
Si vous utilisez un Mac, l'authentification du client SSH est intégrée dans le trousseau MacOS. Une fois que vous avez créé une clé SSH, saisissez dans votre terminal:
ssh-add -K ~/.ssh/id_rsa
Cela ajoutera la clé privée SSH au trousseau MacOS. Le client git utilisera ssh lorsqu'il se connectera au serveur distant. Tant que vous avez enregistré votre clé publique ssh auprès du serveur, tout ira bien.
SSH
. En utilisant l'authentification HTTP, quelqu'un qui volerait les informations d'identification n'aurait accès qu'à GitHub/GitLab
. Les jetons sont également conçus pour avoir une durée de vie limitée.
Après avoir parcouru des dizaines de messages SO, blogs, etc., j'ai essayé tous les méthodes, et c'est ce que j'ai trouvé. Il couvre TOUT.
Ce sont tous les moyens et outils par lesquels vous pouvez authentifier git en toute sécurité pour cloner un référentiel sans invite de mot de passe interactif .
Vous voulez que Just Works ™? Ceci est la balle magique magique.
Obtenez votre jeton d'accès (voir la section dans la triche si vous avez besoin des instructions Github ou Gitea pour cela) et définissez-le dans une variable d'environnement (à la fois pour le développement local et le déploiement):
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
Pour Github, copiez et exécutez ces lignes textuellement :
git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"
Félicitations, maintenant aucun référentiel git de clonage d'outil automatisé ne sera obstrué par une invite de mot de passe, que ce soit en utilisant https ou l'un des styles d'url ssh.
Vous n'utilisez pas Github?
Pour les autres plateformes (Gitea, Github, Bitbucket), changez simplement l'URL. Ne changez pas les noms d'utilisateur (bien qu'arbitraires, ils sont nécessaires pour des entrées de configuration distinctes).
Compatibilité
Cela fonctionne localement sous MacOS, Linux, Windows (dans Bash), Docker, CircleCI, Heroku, Akkeris, etc.
Plus d'informations
Voir la section ".gitconfig au lieu de" de la triche.
Sécurité
Voir la section "Sécurité" de la feuille de triche.
git config --global credential."https://somegithost.com".username MyUserName
, qui est dans votre cheatsheet, mais pas ailleurs dans ce fil de réponse. Cette solution particulière ne répond pas à la question du PO, mais elle a répondu à la mienne, alors merci!
Dans ce cas, vous avez besoin de git credential helper pour dire à git de se souvenir de votre mot de passe et nom d'utilisateur GitHub en utilisant la ligne de commande suivante:
git config --global credential.helper wincred
et si vous utilisez le dépôt à l'aide de la clé SSH, vous avez besoin de la clé SSH pour vous authentifier.
Aucune des réponses ci-dessus n'a fonctionné pour moi. J'ai continué à recevoir ce qui suit chaque fois que je le voulais fetch
ou pull
:
Enter passphrase for key '/Users/myusername/.ssh/id_rsa':
Pour Mac
J'ai pu l'empêcher de demander ma phrase secrète en:
vi ~/.ssh/config
UseKeychain yes
:wq!
Pour les fenêtres
J'ai pu le faire fonctionner en utilisant les informations de ce stackexchange: https://unix.stackexchange.com/a/12201/348665
En plus de modifier le ~/.gitconfig
fichier, vous pouvez le faire si vous demandez:
git config --local --edit
ou
git config --global --edit
git config --local user.name 'your username'
git config --local user.password 'your password'
ou
git config --global user.name 'your username'
git config --global user.password 'your password'
Votre nom d'utilisateur et votre mot de passe peuvent utiliser certains caractères qui briseraient votre mot de passe si vous utilisez des guillemets doubles.
--local
ou --global
signifie que les paramètres de configuration sont enregistrés pour le projet ou pour l'utilisateur du système d'exploitation.
il suffit d'utiliser
git config --global credential.helper store
et faites le git pull , il demandera le nom d'utilisateur et le mot de passe, à partir de maintenant il ne fournira aucune invite pour le nom d'utilisateur et le mot de passe, il stockera les détails
.git-credentials
est l'endroit où votre nom d'utilisateur et votre mot de passe (jeton d'accès) sont stockés lorsque vous exécutez git config --global credential.helper store
, ce que suggèrent les autres réponses, puis tapez votre nom d'utilisateur et votre mot de passe ou jeton d'accès:
https://${username_or_access_token}:${password_or_access_token}@github.com
Donc, pour sauvegarder le nom d'utilisateur et le mot de passe (jeton d'accès):
git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials
Ceci est très utile pour le robot github, par exemple pour résoudre des builds automatisés Chain dans le même référentiel docker en ayant des règles pour une branche différente, puis le déclencher en poussant dessus danspost_push
hooker dans docker hub.
Un exemple de cela peut être vu ici dans stackoverflow.
Un moyen rapide de mettre en cache les informations d'identification git:
git config credential.helper 'cache' --timeout=10800
agréable et sûr
le délai d'attente est en secondes.
Après avoir lu le fil dans son intégralité et expérimenté la plupart des réponses à cette question, j'ai finalement trouvé la procédure qui fonctionne pour moi. Je veux le partager au cas où quelqu'un doit faire face à un cas d'utilisation complexe mais ne veut toujours pas passer par le thread complet et les pages de manuel gitcredentials , gitcredentials-store etc., comme je l'ai fait.
Trouvez ci-dessous la procédure que je suggère SI vous (comme moi) devez traiter avec plusieurs référentiels de plusieurs fournisseurs (GitLab, GitHub, Bitbucket, etc.) en utilisant plusieurs combinaisons différentes de nom d'utilisateur / mot de passe. Si, à la place, vous n'avez qu'un seul compte avec lequel travailler, vous feriez mieux d'employer le git config --global credential.helper store
ougit config --global user.name "your username"
lequel solutions etc. qui ont été très bien expliquées dans les réponses précédentes.
Ma solution:
> git config --global --unset credentials.helper
> cd /path/to/my/repo
> git config --unset credential.helper
> git config credential.helper 'store --file ~/.git_repo_credentials'
Remarque : cette commande crée un nouveau fichier nommé ".git_repo_credentials" dans votre répertoire personnel, dans lequel Git stocke vos informations d'identification. Si vous ne spécifiez pas de nom de fichier, Git utilise la valeur par défaut ".git_credentials". Dans ce cas, il suffit de lancer la commande suivante:
> git config credential.helper store
git config credential.*.username my_user_name
Remarque : utiliser "*" est généralement correct si vos référentiels proviennent du même fournisseur (par exemple GitLab). Si à la place, vos référentiels sont hébergés par différents fournisseurs, je suggère de définir explicitement le lien vers le fournisseur pour chaque référentiel, comme dans l'exemple suivant (pour GitLab):
git config credential.https://gitlab.com.username my_user_name
À ce stade, si vous émettez une commande nécessitant vos informations d'identification (par exemple git pull
), il vous sera demandé le mot de passe correspondant à "my_user_name". Ceci n'est requis qu'une seule fois car git stocke les informations d'identification dans ".git_repo_credentials" et utilise automatiquement les mêmes données lors des accès ultérieurs.
D'après le commentaire de rifrol, sur Linux Ubuntu, de cette réponse , voici comment dans Ubuntu:
sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
Certaines autres distributions fournissent le binaire pour que vous n'ayez pas à le construire.
Dans OS X, il est généralement fourni avec un module par défaut "osxkeychain", vous pouvez donc l'obtenir gratuitement.
Consultez la documentation officielle de git:
Si vous utilisez le transport SSH pour vous connecter à des télécommandes, il vous est possible d'avoir une clé sans mot de passe, ce qui vous permet de transférer des données en toute sécurité sans taper votre nom d'utilisateur et votre mot de passe. Cependant, cela n'est pas possible avec les protocoles HTTP - chaque connexion a besoin d'un nom d'utilisateur et d'un mot de passe. Cela devient encore plus difficile pour les systèmes avec authentification à deux facteurs, où le jeton que vous utilisez pour un mot de passe est généré de manière aléatoire et imprononçable.
Heureusement, Git dispose d'un système d'informations d'identification qui peut vous aider. Git a quelques options fournies dans la boîte:
La valeur par défaut est de ne pas mettre en cache du tout. Chaque connexion vous demandera votre nom d'utilisateur et votre mot de passe.
Le mode «cache» conserve les informations d'identification en mémoire pendant un certain temps. Aucun des mots de passe n'est jamais stocké sur le disque et ils sont purgés du cache après 15 minutes.
Le mode «stocker» enregistre les informations d'identification dans un fichier texte brut sur le disque, et elles n'expirent jamais. Cela signifie que jusqu'à ce que vous changiez votre mot de passe pour l'hôte Git, vous n'aurez plus jamais à saisir vos informations d'identification. L'inconvénient de cette approche est que vos mots de passe sont stockés en texte clair dans un fichier brut dans votre répertoire personnel.
Si vous utilisez un Mac, Git est livré avec un mode «osxkeychain», qui met en cache les informations d'identification dans le trousseau sécurisé attaché à votre compte système. Cette méthode stocke les informations d'identification sur le disque, et elles n'expirent jamais, mais elles sont cryptées avec le même système qui stocke les certificats HTTPS et les remplissages automatiques de Safari.
Si vous utilisez Windows, vous pouvez installer un assistant appelé «Git Credential Manager for Windows». Ceci est similaire à l'aide «osxkeychain» décrite ci-dessus, mais utilise la banque d'informations d'identification Windows pour contrôler les informations sensibles. Il peut être trouvé à https://github.com/Microsoft/Git-Credential-Manager-for-Windows .
Vous pouvez choisir l'une de ces méthodes en définissant une valeur de configuration Git:
$ git config --global credential.helper cache
$ git config --global credential.helper store