J'ai une clé privée protégée par un mot de passe pour accéder à un serveur via SSH.
J'ai 2 machines Linux (Ubuntu 10.04) et le comportement de la commande ssh-add est différent dans les deux cas.
Sur une machine, une fois que j’ai utilisé "ssh-add .ssh/identity" et saisi mon mot de passe, la clé a été ajoutée de manière permanente, c’est-à-dire chaque fois que je mets l'ordinateur hors tension et que je me reconnecte, la clé est déjà ajoutée.
Dans l'autre, je dois ajouter la clé à chaque fois que je me connecte.
Autant que je me souvienne, j'ai fait la même chose pour les deux. La seule différence est que la clé a été créée sur celle qui est ajoutée de manière permanente.
Est-ce que quelqu'un sait comment l'ajouter en permanence à l'autre machine?
Une solution serait de forcer la conservation permanente des fichiers de clés en les ajoutant dans votre fichier ~/.ssh/config
:
IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer
Si vous n'avez pas de fichier 'config' dans le répertoire ~/.ssh, vous devriez en créer un. Il n'a pas besoin de droits root, donc simplement:
nano ~/.ssh/config
... et entrez les lignes ci-dessus selon vos besoins.
Pour que cela fonctionne, le fichier doit avoir chmod 600. Vous pouvez utiliser la commande chmod 600 ~/.ssh/config
.
Si vous voulez que tous les utilisateurs de l'ordinateur utilisent la clé, mettez ces lignes dans /etc/ssh/ssh_config
et la clé dans un dossier accessible à tous.
De plus, si vous souhaitez définir la clé spécifique à un hôte, vous pouvez procéder comme suit dans votre ~/.ssh/config:
Host github.com
User git
IdentityFile ~/.ssh/githubKey
Cela présente l’avantage, lorsque vous avez de nombreuses identités, qu’un serveur ne vous rejette pas parce que vous avez d’abord essayé les fausses identités. Seule l'identité spécifique sera essayée.
Cela ne répondait pas au même problème pour moi 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), qui semble l'avoir corrigé.
(Comme suggéré ici: http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )
J'ai résolu ce problème sur Mac OSX (10.10) en utilisant l'option -K pour ssh-add:
ssh-add -K ~/.ssh/your_private_key
Pour macOS 10.12 et les versions ultérieures, vous devez également modifier votre configuration ssh comme décrit ci-dessous: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
Ajoutez simplement le trousseau, comme indiqué dans Ubuntu Quick Tips https://help.ubuntu.com/community/QuickTips
Quoi
Au lieu de démarrer constamment ssh-agent et ssh-add, il est possible d'utiliser un trousseau pour gérer vos clés ssh. Pour installer le trousseau, vous pouvez simplement cliquer ici ou utiliser Synaptic pour effectuer le travail ou utiliser apt-get à partir de la ligne de commande.
Ligne de commande
Un autre moyen d'installer le fichier consiste à ouvrir le terminal (Application-> Accessoires-> Terminal) et à taper:
Sudo apt-get install keychain
Éditer le fichier
Vous devez ensuite ajouter les lignes suivantes à votre $ {HOME} /. Bashrc ou /etc/bash.bashrc:
keychain id_rsa id_dsa
. ~/.keychain/`uname -n`-sh
J'ai essayé la solution de @ Aaron et elle n'a pas fonctionné, car elle rajoutait mes clés chaque fois que j'ouvrais un nouvel onglet dans mon terminal. Alors je l'ai un peu modifié (notez que la plupart de mes clés sont également protégées par un mot de passe, je ne peux donc pas simplement envoyer la sortie à/dev/null):
added_keys=`ssh-add -l`
if [ ! $(echo $added_keys | grep -o -e my_key) ]; then
ssh-add "$HOME/.ssh/my_key"
fi
Cela permet de vérifier le résultat de ssh-add -l
(qui répertorie toutes les clés ajoutées) pour une clé spécifique. S'il ne la trouve pas, il l'ajoute ensuite avec ssh-add
.
Maintenant, la première fois que j'ouvre mon terminal, on me demande les mots de passe de mes clés privées. On ne me demande plus avant de redémarrer (ou de me déconnecter - je n'ai pas vérifié) mon ordinateur.
Comme j'ai un tas de clés, je stocke la sortie de ssh-add -l
dans une variable pour améliorer les performances (du moins, je suppose, cela améliore les performances :))
PS: Je suis sur Linux et ce code est allé dans mon fichier ~/.bashrc
. Si vous utilisez Mac OS X, je suppose que vous devez l’ajouter à .zshrc
ou .profile
.
EDIT: Comme l'a souligné @Aaron dans les commentaires, le fichier .zshrc
est utilisé à partir du shell zsh
- donc si vous ne l'utilisez pas (si vous n'êtes pas sûr, alors très probablement, vous utilisez bash
à la place), ce code devrait aller dans votre fichier .bashrc
.
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.
J'ai eu le même problème sur Ubuntu 16.04: certaines clés ont été ajoutées de façon permanente, pour d'autres, j'ai dû exécuter ssh-add
à chaque session. J'ai découvert que les clés ajoutées de manière permanente avaient à la fois des clés privées et publiques situées dans ~/.ssh
et que les clés oubliées à chaque session n'avaient que des clés privées dans ~/.ssh
dir. La solution est donc simple: vous devez copier les deux clés privée et publique sur ~/.ssh
avant d'exécuter ssh-add
.
Je lance Ubuntu avec deux clés id_rsa. (une personnelle pour le travail). ssh-add mémoriserait une clé (personnelle) et oublierait la société à chaque fois.
En vérifiant la différence entre les deux, j'ai vu que ma clé personnelle avait 400 droits, tandis que celle de la société en avait 600. (eu u + w). Supprimer le droit d’écriture de l’utilisateur de la clé d’entreprise (avec w ou défini sur 400) a résolu mon problème. ssh-add se souvient maintenant des deux clés.
Sur Ubuntu 14.04 (peut-être plus tôt, peut-être encore), vous n'avez même pas besoin de la console:
seahorse
ou lancez ce que vous trouvez en recherchant "clé"ssh
récupérera l'identité (c'est-à-dire la clé) par l'intermédiaire de l'agentssh
avec -A
ou faites-le par défautL'ajout des lignes suivantes dans "~/.bashrc" a résolu le problème pour moi. J'utilise le bureau Ubuntu 14.04.
eval `gnome-keyring-daemon --start`
USERNAME="reynold"
export SSH_AUTH_SOCK="$(ls /run/user/$(id -u $USERNAME)/keyring*/ssh|head -1)"
export SSH_AGENT_PID="$(pgrep gnome-keyring)"
Cela a fonctionné pour moi.
ssh-agent /bin/sh
ssh-add /path/to/your/key
très simple ^ _ ^ deux étapes
1. votre trousseau d'installation
2.ajouter du code ci-dessous à .bash_profile
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
Pour ceux qui utilisent Fish Shell, vous pouvez utiliser la fonction suivante puis l’appeler dans ~/.config/fish/config.fish. Toutes les clés commençant par id_rsa seront chargées dans le ssh-agent
.
# Load all ssh keys that start with "id_rsa"
function loadsshkeys
set added_keys (ssh-add -l)
for key in (find ~/.ssh/ -not -name "*.pub" -a -iname "id_rsa*")
if test ! (echo $added_keys | grep -o -e $key)
ssh-add "$key"
end
end
end
# Call the function to run it.
loadsshkeys
Si vous voulez que le ssh-agent
auto démarre automatiquement lorsque vous ouvrez un terminal, vous pouvez utiliser tuvistavie/fish-ssh-agent pour le faire.