580 votes

Ajouter une clé privée en permanence avec ssh-add sur Ubuntu

J'ai une clé privée protégé par un passowrd pour accéder à un serveur via SSH.

J'ai 2 linux (ubuntu 10.04) les machines et le comportement de la commande ssh-add est différente dans les deux d'entre eux.

Dans une machine, une fois que j'utilise "ssh-add .ssh/identity" et entré mon mot de passe, la clé a été ajoutée de façon permanente, c'est à dire, chaque fois que j'ai arrêter l'ordinateur et reconnectez-vous, la clé a déjà été ajouté.

L'un dans l'autre, j'ai du ajouter la clé à chaque fois que je connexion.

Aussi loin que je me souvienne, j'ai fait la même chose sur les deux. La seule différence est que la clé a été créée sur celle qui est ajoutée de façon permanente.

Personne ne sait comment ajouter de façon permanente à l'autre de la machine ainsi?

Merci d'avance

824voto

daminetreg Points 1277

Une solution serait d'obliger les fichiers de clé pour être conservés de façon permanente, en les ajoutant dans votre ~/.ssh/config le fichier:

IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer 

Si vous souhaitez que tous les utilisateurs sur l'ordinateur pour utiliser la clé de mettre ces lignes en /etc/ssh/ssh_config et la clé dans un dossier accessible à tous.

De plus, si vous souhaitez définir la clé spécifiques à un hôte, vous pouvez effectuer les opérations suivantes dans votre ~/.ssh/config :

Host github
    HostName github.com
    User git
    IdentityFile ~/.ssh/githubKey

Vous aurez besoin de clone avec @github au lieu de @github.com mais cela a l'avantage que seule cette clé sera essayé.

128voto

Aaron Points 1695

Cela n'a pas répondu au même problème sous Mac OS X Lion. J'ai fini par ajouter:

 ssh-add ~/.ssh/id_rsa &>/dev/null
 

Pour mon .zshrc (mais .profile serait bien aussi), ce qui semble l'avoir corrigé.

(Comme suggéré ici: http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )

19voto

J'ai essayé @Aaron solution et il n'a pas assez de travail pour moi, car il permettrait d'ajouter mes clés à chaque fois que j'ouvre un nouvel onglet dans mon terminal. Alors je l'ai modifié un peu(notez que la plupart de mes clés sont également protégés par mot de passe donc je ne peux pas juste envoyer la sortie vers /dev/null):

added_keys=`ssh-add -l`

if [ ! $(echo $added_keys | grep -o -e my_key) ]; then
    ssh-add "$HOME/.ssh/my_key"
fi

Ce que ce n'est qu'elle vérifie la sortie de l' ssh-add -l(qui énumère toutes les clés qui ont été ajoutés) pour une clé spécifique et si il ne le trouve pas, puis il ajoute avec ssh-add.

Maintenant, la première fois que j'ouvre mon terminal je me suis demandé pour les mots de passe pour mes clés privées et je ne suis pas demandé à nouveau jusqu'à ce que je redémarre(ou de déconnexion - je n'ai pas vérifié) mon ordinateur.

Depuis que j'ai un trousseau de clefs, je stocker la sortie de l' ssh-add -l dans une variable afin d'améliorer les performances(au moins je suppose que cela améliore les performances :) )

PS: je suis sur linux et ce code est allé à ma ~/.bashrc le fichier - si vous êtes sur Mac OS X, alors je suppose que vous devez l'ajouter à .zshrc ou .profile

EDIT: Comme l'a souligné @Aaron dans les commentaires, l' .zshrc le fichier est utilisé à partir de l' zsh coque - donc, si vous ne l'utilisez pas si vous n'êtes pas sûr, alors très probablement, vous êtes à l'aide de bash plutôt), ce code devrait aller à votre .bashrc le fichier.

14voto

erezmta Points 31

Dans mon cas, la solution était:

Les autorisations sur le fichier de configuration doivent être 600. chmod 600 config

Comme mentionné dans les commentaires ci-dessus par generalopinion

Pas besoin de toucher le contenu du fichier de configuration.

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