214 votes

Configuration de Git sur SSH

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?

318voto

Muein Muzamil Points 1326

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.

111voto

DigitalRoss Points 80400

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.

27voto

Jefromi Points 127932

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).

24voto

Zorayr Points 2637

Assurez-vous que lorsque vous avez cloné le référentiel, vous l'avez fait avec l'URL SSH et non HTTPS; Dans la zone URL du clone du dépôt, choisissez le protocole SSH avant de copier l’URL. Voir l'image ci-dessous:

entrer la description de l'image ici

6voto

Gaston Points 666

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:

Avec L'Authentification Par Clé Publique.

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X