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 puis-je configurer git pour ne pas avoir à saisir mon mot de passe plusieurs fois?
Réponses
Trop de publicités?A eu un problème similaire avec le GitHub. Cela se produisait parce que j'utilisais le protocole HTTPS. Pour vérifier quel protocole vous utilisez, lancez simplement
git config -l
et regardez la ligne commençant par 'remote.origin.url'. Pour changer de protocole
git config remote.origin.url git@github.com:your_username/your_project.git
J'espère que ça aide.
Essayez ssh-add
, vous avez besoin d' ssh-agent
à être en cours d'exécution et en tenant votre clé privée
(Ok, en réponse à la mise à jour de question, vous devez d'abord exécuter ssh-keygen
pour générer une clé publique et privée comme Jefromi expliqué.. Vous mettez la clé publique sur le serveur. Vous devez utiliser un mot de passe, si vous n'avez pas vous avez l'équivalent d'un texte clair le mot de passe de votre clé privée. Mais si vous le faites, alors vous avez besoin en tant que pratique, ssh-agent
comme expliqué ci-dessous.)
Vous devez être en cours d'exécution ssh-agent
en arrière-plan lorsque vous vous connectez, et puis la première fois que vous vous connectez, exécutez ssh-add
à donner à l'agent de votre mot de passe. Tous les ssh-famille, les commandes seront alors consulter l'agent et automatiquement être en mesure d'utiliser votre clé privée.
Sur GNOME et KDE systèmes, ssh-agent
est probablement déjà lancé automatiquement pour vous. Je vais aller dans les détails au cas où, comme moi, vous avez également un Cygwin ou d'autres environnement windows où cette majorité n'est certainement pas fait pour vous.
Commencez ici: man ssh-agent
.
Il existe une multitude de façons d'exécuter automatiquement à l'agent. Comme l'homme page explique, vous pouvez soit exécuter de sorte qu'il est un parent de tous les autres processus et prendre des dispositions pour les variables d'environnement qu'il fournit (pour interprocessus contact) pour automatiquement à tous les enfants de milieux, ou vous pouvez exécuter l'agent comme un enfant ordinaire, sauver l'environnement de paramètres dans un fichier, et la source de ce fichier dans chaque coquille, quand ils commencent.
Mon Ubuntu installer automatiquement a l'agent de lancer l'installation, de sorte que tout ce que j'avais à faire était de courir ssh-add une fois chaque fois que je redémarre. Essayez d'exécuter ssh-add
et voir si cela fonctionne, si oui, alors vous avez juste besoin de le faire une fois par redémarrer.
Mon Cygwin système devait-il le faire manuellement, j'ai donc fait cela dans mon .profil et je l'ai .bashrc source .profil:
. .agent > /dev/null
ps -p $SSH_AGENT_PID | grep ssh-agent > /dev/null || {
ssh-agent > .agent
. .agent > /dev/null
}
L' .agent
fichier est créé automatiquement par le script, il contient les variables d'environnement les définitions et les exportations. Au-dessus de la tente de la source .fichier de l'agent, puis tente d' ps(1)
l'agent. Si cela ne fonctionne pas, il commence un agent et crée un nouveau fichier de l'agent. Vous pouvez aussi exécuter ssh-add
et si elle ne parvient pas à démarrer un agent.
C'est à propos de la configuration de ssh, pas de git. Si vous ne l'avez pas déjà, vous devez utiliser ssh-keygen
(avec un vide phrase de passe) pour créer une paire de clés. Ensuite, vous copiez la clé publique à la destination distante avec ssh-copy-id
. Sauf si vous avez besoin de plusieurs touches (par exemple, plus de sécurité un avec un mot de passe pour d'autres fins) ou vous avez vraiment bizarre multiples de l'identité choses qui se passent, c'est simple:
ssh-keygen # enter a few times to accept defaults
ssh-copy-id -i ~/.ssh/id_rsa user@host
Edit:
Vous devriez vraiment lire DigitalRoss réponse, mais: si vous utilisez les touches avec les phrases de passe, vous devez utiliser ssh-add <key-file>
pour les ajouter à ssh-agent
(et, évidemment, le lancement d'un ssh-agent
si votre distribution n'est pas déjà en cours d'exécution pour vous).
Je pense qu'il y a deux choses différentes ici. La première est que normal authentification SSH demande à l'utilisateur de mettre le mot de passe du compte (d'où le mot de passe du compte seront authentifiés à l'aide de différentes méthodes, en fonction de la configuration de sshd).
Vous pouvez éviter de mettre ce mot de passe à l'aide de certificats. Avec des certificats, vous avez encore de mettre un mot de passe, mais ce temps 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 souligné par steveth45:
Si vous voulez éviter de mettre le certificat du mot de passe chaque fois que vous pouvez ensuite utiliser ssh-agent, comme l'a souligné DigitalRoss
La manière exacte que vous faites cela dépend Unix vs Windows, mais essentiellement, vous devez exécuter la commande ssh-agent en arrière-plan lorsque vous vous connectez, et puis la première fois que vous vous connectez, exécutez la commande ssh-add pour donner à l'agent de votre mot de passe. Tous les ssh-famille, les commandes seront alors consulter l'agent et de récupérer automatiquement votre mot de passe.
Commencez ici: man ssh-agent.
Le seul problème de ssh-agent, c'est que, sur *nix, au moins, vous avez à mettre les certificats de mot de passe à chaque nouveau shell. Et puis le certificat est "chargé" et vous pouvez l'utiliser pour s'authentifier auprès d'un serveur ssh sans mettre n'importe quel type de mot de passe. Mais c'est sur que shell en particulier.
Avec keychain , 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 mettre le mot de passe du certificat. Et puis, tous les autres shell utilisera que "chargé" certificat et votre mot de passe vous sera jamais demandé de nouveau jusqu'à ce que vous redémarrez votre PC.
Gnome a une application similaire, appelé Gnome Keyring que vous demande votre certificat de mot de passe la première fois que vous l'utilisez, puis il stocke en toute sécurité de sorte que vous ne sera pas demandé de nouveau.