Comment puis-je éviter la spécification d'un nom d'utilisateur et le mot de passe à chaque git push?
Je git push
mon travail à distance à un dépôt Git.
Chaque push
va me demander d'entrée username
et password
. Je voudrais l'éviter pour chaque pression, mais comment configurer l'éviter?
- Une réponse est disponible ici: stackoverflow.com/questions/6565357/...
- Longue histoire courte: Pour github, il suffit de suivre ces deux liens help.github.com/articles/generating-ssh-keys help.github.com/articles/changing-a-remote-s-url
- pour bitbucket veuillez suivre ce lien
Vous devez vous connecter pour publier un commentaire.
1. Générer une clé SSH
Linux/Mac
Ouvrir un terminal pour créer des clés ssh:
Pour Windows
(Ne fonctionne que si la validation du programme est capable d'utiliser les certificats et/ou privé & clés publiques ssh)
Ici est un procédure pas à pas sur le mastic gen pour les étapes ci-dessus
2. Associer la clé SSH avec le dépôt distant
Cette étape varie selon la distance est mis en place.
Si c'est un dépôt GitHub et que vous disposez de privilèges d'administration, allez à la paramètres et cliquez sur 'ajouter une clé SSH'. Copiez le contenu de votre
~/.ssh/id_rsa.pub
dans le champ intitulé "Clé".Si votre dépôt est géré par quelqu'un d'autre, donner à l'administrateur de votre
id_rsa.pub
.Si votre dépôt distant est administré par votre, vous pouvez utiliser cette commande pour exemple:
scp ~/.ssh/id_rsa.pub YOUR_USER@YOUR_IP:~/.ssh/authorized_keys/id_rsa.pub
3. Définissez votre URL distante à une forme qui prend en charge SSH 1
Si vous avez effectué les étapes ci-dessus et sont encore obtenir l'invite de mot de passe, assurez-vous que votre repo URL est de la forme
par opposition à
Pour voir votre repo URL, exécutez:
Vous pouvez modifier l'URL avec:
[1] Cette rubrique intègre la réponse de Eric P
y
quand on vous demande si vous voulez remplacer l'actuel id_rsa clé.git+ssh
option ne semble pas fonctionner si mon nom d'utilisateur local est différent de mon github nom d'utilisateur.clip < ~/.ssh/id_rsa.pub
et coller ce contenu dans une nouvelle clé SSH dans le "SSH et de Clés GPG" section de votre GitHub Paramètres.~/.ssh
dossier dans mon repo distant.git remote set-url origin [email protected]:/username/projectname.git
Permanence de l'authentification avec dépôts Git,
Exécuter la commande suivante pour activer la mise en cache des informations d'identification.
Utilisation doit également spécifier la mise en cache expire,
Après l'activation de la mise en cache des informations d'identification, il sera mis en cache pour 7200 secondes (2 heures).
Remarque: informations d'Identification helper stockage de mot de passe non crypté sur le disque local.
git
page de manuel: "à l'Aide de cette aide permettra de stocker vos mots de passe en clair sur le disque, protégé uniquement par les permissions du système de fichiers."store
informations d'identification helper stockage du mot de passe sur le disque chiffré.git config credential.helper store
si je ne veux pas plus?git config --unset credential.helper
Si vous avez déjà vos clés SSH, mettre en place et sont encore obtenir l'invite de mot de passe, assurez-vous que votre repo URL est de la forme
par opposition à
Pour voir votre repo URL, exécutez:
Vous pouvez modifier l'URL avec
git remote set-url
comme suit:git init
localement, puis essayé de pousser après l'ajout de la distance à partir d'un nouveau repo sur le site GitHub.[email protected]/username/reponame.git
git remote set-url origin `git remote get-url origin | awk -F/ '{ print "git+ssh://[email protected]/" $(NF-1) "/" $(NF) }'
Suffit d'utiliser
--repo
option pour la commande git push commande. Comme ceci:git remote set-url origin https://name:[email protected]/repo.git
Économie Indéfiniment
Vous pouvez utiliser le git-credential magasin via
qui les magasins de votre mot de passe non crypté dans le système de fichiers:
Avec un Délai d'attente
Utiliser le git-identification-cache qui, par défaut, stocke le mot de passe pour 15 minutes.
de fixer un autre délai d'attente, utilisez
--timeout
(ici 5 minutes)Sécuriser L'Épargne Indéfiniment (OS X et Windows)
J'ai été en utilisant le lien https (
https://github.com/org/repo.git
)au lieu de la connexion ssh;
De commutation résolu le problème pour moi!
Fil de votre client de git pour votre système d'exploitation banque d'informations d'identification. Par exemple, dans Windows, vous liez les informations d'identification de l'aide pour wincred:
Est-il un moyen de sauter le mot de passe à taper lors de l'utilisation de https://GitHub?
Sur le système d'exploitation Windows utiliser ce lieu, cela fonctionne pour moi:
par exemple
Voulais juste souligner quelque chose à propos de la solution a dit ci-dessus à plusieurs reprises:
Vous pouvez utiliser n'importe quelle commande qui nécessite un mot de passe après cette. Vous n'avez pas à pousser. (vous pouvez également tirer par exemple) Après cela, vous n'aurez pas besoin de saisir votre nom d'utilisateur /mot de passe de nouveau.
J'ai utilisé la réponse que Pavel a suggéré et il a travaillé pour moi. Ma différence est à faire pendant que j'étais en ajoutant de la télécommande comme suit:
git remote add (alias) https://(name:password)@github.com/(the remote address).git
Ma Solution sur Windows:
ssh-keygen -t rsa
(Appuyez sur entrée pour toutes les valeurs)Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
Si votre PC est sécurisé ou vous ne se soucient pas de mot de passe de sécurité, cela peut être réalisé très simplement. En supposant que le dépôt distant est sur GitHub et
origin
est votre nom local pour le dépôt distant, utilisez cette commandeLa
--push
drapeau assure cela modifie l'URL du référentiel pour lagit push
commande uniquement. (La question posée dans le post original est d'environgit push
commande uniquement. Nécessitant un nom d'utilisateur+mot de passe que pour pousser des opérations est la procédure normale d'installation pour public dépôts sur GitHub . Notez que privé dépôts sur GitHub serait également besoin d'un nom d'utilisateur+mot de passe pour les tirer et les opérations d'extraction, de sorte que pour un repository privé vous ne voulez pas utiliser le--push flag
...)AVERTISSEMENT: C'est intrinsèquement fragile parce que:
votre fournisseur de services internet, ou quelqu'un enregistrement de votre réseau d'accès, il peut facilement
voir le mot de passe en clair dans l'URL;
toute personne qui accède à votre PC peut afficher votre mot de passe à l'aide de
git remote show origin
.C'est pourquoi à l'aide d'une clé SSH est la réponse.
Même une clé SSH est pas totalement sécurisé. Toute personne qui accède à votre PC peut encore, par exemple, qui pousse l'épave de votre dépôt ou - pire - push commet faire des changements subtils dans votre code. (Tous poussés commits sont évidemment très visible sur GitHub. Mais si quelqu'un voulait changer votre code subrepticement, ils pourraient
--amend
une précédente livraison sans changer le message de commit, et puis à force de le pousser à. Que serait discret et assez difficile à apprécier dans la pratique.)Mais de révéler votre mot de passe est pire. Si un attaquant connaissance de votre nom d'utilisateur+mot de passe, ils peuvent faire des choses comme vous lock-out de votre propre compte, de supprimer votre compte, supprimer définitivement le référentiel, etc.
Alternativement pour des raisons de simplicité et de sécurité, vous pouvez fournir des seulement votre nom d'utilisateur dans l'URL, de sorte que vous devrez taper votre mot de passe chaque fois que vous
git push
mais vous n'aurez pas à donner votre nom d'utilisateur à chaque fois. (J'aime bien cette approche, d'avoir à taper le mot de passe donne-moi une pause pour penser à chaque fois que jegit push
, donc je ne peux pasgit push
par accident.)@
, c'est la rupture de commande de la pensée mot de passe après le @ dans le cadre de serveur git?L'exécution de la commande ci-dessous résolu le problème pour moi.
Veuillez consulter ci-dessous github documentation:
Autant que je sache, il n'y a simplement deux sûr façons: ssh ou de mot de passe crypté à l'aide d'un fichier de clés.
SSH
cat ~/.ssh/id_rsa.pub
, collez-là, le nom et l'enregistrer (si vous n'avez pas de tel fichier, de générer un vous-même enssh-keygen -t rsa
- juste Entrer pour toutes les invites);git remote set-url origin git+ssh://[email protected]/username/reponame.git
- vous pouvez le vérifier d'abord pargit remote -v
);touch t; git add t; git commit -m "test"; git push
et confirmer oui pour profiter de la mot de passe gratuit monde.de mot de passe CRYPTÉ à l'aide d'un fichier de clés
Si vous venez d'utiliser
git config --global credential.helper store
comme d'autres l'ont mentionné, votre non chiffrés les mots de passe sont simplement stockés dans un texte brut sous~/.git-credentials
qui n'est pas sûr qu'il y paraît.Essayer de chiffrer comme
Tout cela résulte de ce que git ne prévoit pas la possibilité de cloner/tirer/pousser/récupère les commandes pour envoyer les informations d'identification à travers un tuyau. Bien qu'il donne des informations d'identification.helper, il stocke sur le système de fichiers ou crée un démon etc. Souvent, les informations d'identification de GIT est un système de niveau et du fardeau de la preuve pour les garder en sécurité sur la mise en invoquant les commandes git. Très dangereux en effet.
Voici ce que j'avais à contourner.
1. De version Git (git --version) doit être supérieur ou égal à 1.8.3.
GIT CLONE
Pour le clonage, utilisez "git clone URL" après avoir changé l'URL de la forme, http://{myuser}@{my_repo_ip_address}/{myrepo_name.git} http://{myuser}:{mypwd}@{my_repo_ip_address}/{myrepo_name.git}
Puis purger le référentiel du mot de passe dans la section suivante.
PURGE
Maintenant, cela aurait disparu et
Ici, {my_url_with_pwd} est l'URL avec le mot de passe. Depuis l'URL a des barres obliques, il a besoin d'être échappé par deux barres obliques vers l'arrière. Par ex, pour l'URL http://kris:[email protected]/proj.git -> http:\\/\\/kris:[email protected]\\/proj.git
Si votre demande est à l'aide de Java à ces commandes, utilisez ProcessBuilder au lieu de l'Exécution. Si vous devez utiliser de l'Exécution, utilisez getRunTime().exec qui prend de tableau de Chaîne en argument de /bin/bash-c comme arguments, plutôt que celui qui prend une Chaîne de caractères comme argument.
GIT FETCH/PULL/PUSH
Étape 1 -
Créer des clés SSH sur votre système linux à l'aide de commande ci-dessous
Il va vous demander de mot de passe et le nom de fichier par défaut est ~/.ssh/id_rsa, ~/.ssh/id_rsa.pub)
Étape 2 -
Une fois les fichiers créés ajouter la clé publique id_rsa.pub pour github compte ssh section.
Étape 3 -
Sur votre machine, ajouter la clé privée id_rsa à ssh-agent en utilisant la commande ci-dessous
Étape 4 -
Maintenant ajouter à distance url [email protected]:user_name/repo_name.git pour votre repo git local à l'aide de commande ci-dessous.
C'est tout.
Vous avez la configuration d'une clé privée SSH, vous pouvez consulter ce page, comment faire l'installation sur Mac, si vous êtes sur linux le guide devrait être presque la même, sur Windows vous auriez besoin d'outil comme MSYS.
Semble que, au moins lors de l'utilisation de TortoiseGIT sur Windows, il est possible de créer les clés SSH et le transfert de ces pour le serveur GIT en utilisant simplement: