J'ai cloné mon dépôt git sur ssh. Donc, chaque fois que je communique avec le maître d'origine en poussant ou en tirant, je dois ressaisir mon mot de passe. Comment configurer git pour ne pas avoir à saisir mon mot de passe plusieurs fois?
195
Réponses:
Essayez
ssh-add
, vous devezssh-agent
exécuter et maintenir votre clé privée(Ok, répondant à la question mise à jour, vous exécutez d'abord
ssh-keygen
pour générer une clé publique et privée comme l' explique Jefromi . Vous mettez la clé publique sur le serveur. Vous devez utiliser une phrase secrète, si vous ne l'avez pas, vous avez l'équivalent d'une plaine -mot de passe texte dans votre clé privée. Mais lorsque vous le faites, vous devez en pratique, comme expliqué ci-dessous.)ssh-agent
Vous souhaitez être exécuté
ssh-agent
en arrière-plan lorsque vous vous connectez. Une fois connecté, l'idée est d'exécuterssh-add
une seule et unique fois, afin de donner à l'agent votre phrase secrète, pour décoder votre clé. L'agent reste alors en mémoire avec votre clé déverrouillée et chargée, prête à être utilisée chaque fois que vous utilisez quelque part.Toutes les commandes de la famille ssh 1 consulteront alors l'agent et pourront automatiquement utiliser votre clé privée.
Sur OSX (err, macOS ), les systèmes GNOME et KDE
ssh-agent
sont généralement lancés automatiquement pour vous. Je vais passer en revue les détails au cas où, comme moi, vous avez également un environnement Cygwin ou d'autres fenêtres où cela n'est certainement pas fait pour vous.Commencez ici:
man ssh-agent
.Il existe différentes manières d'exécuter automatiquement l'agent. Comme l'explique la page de manuel, vous pouvez l'exécuter pour qu'elle soit le parent de tous les autres processus de votre session de connexion. De cette façon, les variables d'environnement qu'il fournit seront automatiquement dans tous vos shells. Lorsque vous invoquerez (plus tard)
ssh-add
ou lesssh
deux auront accès à l'agent car ils ont tous les variables d'environnement avec des chemins d'accès de socket magique ou autre.Vous pouvez également exécuter l'agent en tant qu'enfant ordinaire, enregistrer les paramètres d'environnement dans un fichier et source ce fichier dans chaque shell au démarrage.
Mes systèmes OSX et Ubuntu effectuent automatiquement la configuration du lancement de l'agent, donc tout ce que j'ai à faire est de l'exécuter
ssh-add
une seule fois. Essayez de courirssh-add
et voyez si cela fonctionne, si c'est le cas, il vous suffit de le faire une fois par redémarrage.Mon système Cygwin avait besoin que cela soit fait manuellement, donc je l'ai fait dans mon
.profile
et j'ai une.bashrc
source.profile
:Le
.agent
fichier est créé automatiquement par le script; il contient les définitions et les exportations des variables d'environnement. Ce qui précède tente de source le fichier .agent, puis essaie àps(1)
l'agent. Si cela ne fonctionne pas, il démarre un agent et crée un nouveau fichier d'agent. Vous pouvez également simplement exécuterssh-add
et en cas d'échec démarrer un agent.1. Et même local et distant
sudo
avec la bonne extension pam.la source
ssh-agent
il est probablement plus pratique d'utiliser:eval `ssh-agent`
J'ai eu un problème similaire avec le GitHub parce que j'utilisais le protocole HTTPS. Pour vérifier le protocole que vous utilisez, lancez
et regardez la ligne commençant par
remote.origin.url
. Pour changer de protocolela source
Permission denied
erreur.git remote set-url origin [email protected]:your_username/your_project.git
Il s'agit de configurer ssh, pas git. Si vous ne l'avez pas déjà fait, vous devez utiliser
ssh-keygen
(avec une phrase de passe vide) pour créer une paire de clés. Ensuite, vous copiez la clé publique vers la destination distante avecssh-copy-id
. À moins que vous n'ayez besoin de plusieurs clés (par exemple, une clé plus sécurisée avec une phrase secrète à d'autres fins) ou que vous ayez des trucs d'identité multiple vraiment étranges, c'est aussi simple que cela:Edit: Vous devriez vraiment lire la réponse de DigitalRoss, mais: si vous utilisez des clés avec des mots de passe, vous devrez les utiliser
ssh-add <key-file>
pour les ajouterssh-agent
(et évidemment démarrer unssh-agent
si votre distribution n'en a pas déjà une pour vous).la source
ssh-agent
car il veut contourner le problème de la phrase de passe à chaque fois. Pas de downvoting mais je pense que vous devez améliorer cette réponse, sauf si je suis celui qui a mal compris ...ssh-agent
. +1 à vous!ssh-*
que la phrase secrète appelle pour utiliser la clé - où vous vouliez vraiment dire votre mot de passe utilisateur réel sur la télécommande?Assurez-vous que lorsque vous avez cloné le référentiel, vous l'avez fait avec l'URL SSH et non le HTTPS; dans la zone URL de clonage du référentiel, choisissez le protocole SSH avant de copier l'URL. Voir l'image ci-dessous:
la source
Si vous avez cloné en utilisant HTTPS (recommandé), alors: -
puis
timeout = 2592000 (30 jours en secondes) pour activer la mise en cache pendant 30 jours (ou toutes les suites que vous).
Exécutez maintenant une simple commande git qui nécessite votre nom d'utilisateur et votre mot de passe.
Entrez vos informations d'identification une fois et la mise en cache est désormais activée pendant 30 jours.
Réessayez avec n'importe quelle commande git et maintenant vous n'avez plus besoin d'informations d'identification.
Pour plus d'informations: - Mise en cache de votre mot de passe GitHub dans Git
Remarque : Vous avez besoin de Git 1.7.10 ou d'une version plus récente pour utiliser l'assistant d'informations d'identification. Au redémarrage du système, nous devrons peut-être saisir à nouveau le mot de passe.
la source
Étendre les pensées de Muein à ceux qui préfèrent éditer les fichiers directement sur les commandes en cours d'exécution dans git-bash ou terminal.
Accédez au répertoire .git de votre projet (racine du projet sur votre machine locale) et ouvrez le fichier 'config'. Recherchez ensuite [origine "distante] et définissez la configuration d'URL comme suit:
la source
Je pense qu'il y a deux choses différentes ici. La première est que l'authentification SSH normale nécessite que l'utilisateur mette le mot de passe du compte (où le mot de passe du compte sera authentifié par différentes méthodes, selon la configuration de sshd).
Vous pouvez éviter de mettre ce mot de passe à l'aide de certificats. Avec les certificats, vous devez toujours mettre un mot de passe, mais cette fois, c'est le mot de passe de votre clé privée (qui est indépendant du mot de passe du compte).
Pour ce faire, vous pouvez suivre les instructions indiquées par steveth45:
Si vous voulez éviter de mettre le mot de passe du certificat à chaque fois, vous pouvez utiliser ssh-agent, comme l'a souligné DigitalRoss
Le seul problème de ssh-agent est que, sur * nix au moins, vous devez mettre le mot de passe des certificats sur chaque nouveau shell. Et puis le certificat est "chargé" et vous pouvez l'utiliser pour vous authentifier auprès d'un serveur ssh sans mettre de mot de passe. Mais c'est sur cette coquille particulière.
Avec le trousseau, vous pouvez faire la même chose que ssh-agent mais "à l'échelle du système". Une fois que vous allumez votre ordinateur, vous ouvrez un shell et mettez le mot de passe du certificat. Et puis, chaque autre shell utilisera ce certificat "chargé" et votre mot de passe ne sera plus jamais demandé jusqu'à ce que vous redémarriez votre PC.
Gnome a une application similaire, appelée Gnome Keyring qui demande le mot de passe de votre certificat la première fois que vous l'utilisez, puis il le stocke en toute sécurité afin que vous ne soyez plus invité.
la source
AddKeysToAgent yes
en .ssh / config. Ensuite, il est chargé dans la mémoire jusqu'à ce que vousSi vous utilisez github, ils ont un très bon tutoriel qui l'explique plus clairement (du moins pour moi).
http://help.github.com/set-up-git-redirect/
la source
Lorsque vous êtes invité à saisir une phrase secrète, laissez-la vide, c'est-à-dire appuyez simplement sur Entrée. aussi simple que cela!!
la source
Essayez ceci depuis la boîte à partir de laquelle vous appuyez
Vous devriez alors obtenir une réponse bienvenue de github et vous pourrez ensuite pousser.
la source
Hi gkucmierz! You've successfully authenticated, but GitHub does not provide shell access.
Mais en quelque sorte git me demande toujours le mot de passe quand j'essaye de pousserJ'ai dû cloner un dépôt git à partir d'un serveur qui n'autorisait pas la clé de connexion vie ssh mais uniquement avec un utilisateur / mot de passe. Je n'ai trouvé aucun moyen de configurer le plugin Git pour utiliser une simple combinaison utilisateur / mot de passe, j'ai donc ajouté la commande shell suivante en tant qu'étape de pré-génération sur une machine de construction Linux qui dépend de l'outil attendu (apt-get install expect):
CE N'EST PAS UNE BONNE MANIÈRE DE RÉSOUDRE CE PROBLÈME COMME VOTRE MOT DE PASSE EST MONTRÉ COMME UN TEXTE CLAIR DANS LA CONFIGURATION ET LES JOURNAUX DU TRAVAIL JENKINS! UTILISEZ-LE UNIQUEMENT SI IL N'Y A PAS DE MOYEN DE CONFIGURER L'AUTHENTIFICATION PAR CLÉ RSA OU D'AUTRES POSSIBILITÉS DE CONFIGURATION!
la source
Ajoutez une seule ligne
AddKeysToAgent yes
en haut du fichier .ssh / config. Bien sûr, ssh-agent doit être en cours d'exécution au préalable. Si ce n'est pas en cours d'exécution (vérifiez parprep ssh-agent
), exécutez-le simplementeval $(ssh-agent)
Maintenant, la clé est chargée à l'échelle du système dans la mémoire et vous n'avez pas besoin de taper à nouveau la phrase secrète.
La source de la solution est /ubuntu/362280/enter-ssh-passphrase-once/853578#853578
la source
J'ai toujours essayé d'éviter de taper la phrase secrète parce que j'utilise ssh sur Windows. Ce que j'ai fait, c'est de modifier mon fichier .profile, afin que j'entre ma phrase secrète dans une session particulière. Voici donc le morceau de code:
donc avec cela je tape ma phrase de passe une fois dans une session ..
la source
J'ai essayé toutes ces suggestions et plus, juste pour pouvoir git cloner à partir de mon instance AWS. Rien n'a fonctionné. J'ai finalement triché par désespoir: j'ai copié le contenu de id_rsa.pub sur ma machine locale et l'ai ajouté à ~ / .ssh / known_hosts sur mon instance AWS.
la source