Ajouter une clé privée en permanence avec SSH-ajouter sur Ubuntu
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.
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'arrête l'ordinateur et que je me connecte à nouveau, la clé est déjà ajoutée.
dans l'autre, je dois ajouter la clé à chaque fois que je connexion.
autant 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.
est-ce que quelqu'un sait comment l'ajouter en permanence à l'autre machine?
13 réponses
une solution serait de forcer les fichiers clés à être conservés en permanence, en les ajoutant dans votre fichier ~/.ssh/config
:
IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer
si vous voulez que tous les utilisateurs de l'ordinateur d'utiliser la clé mettent ces lignes dans /etc/ssh/ssh_config
et la clé dans un dossier accessible à tous.
de plus si vous voulez définir la clé spécifique à un hôte, vous pouvez faire ce qui suit dans votre ~/.SSH / config:
Host github
HostName github.com
User git
IdentityFile ~/.ssh/githubKey
vous devrez cloner avec @github au lieu de @github.com mais cela a l'avantage que seule cette clé sera essayé.
cela ne répond pas à la même question pour moi sous Mac OS X Lion. J'ai fini par ajouter:
ssh-add ~/.ssh/id_rsa &>/dev/null
à mon .zshrc (mais .profil serait bien aussi), qui semble avoir fixé.
(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 plus tard, vous devez modifier votre configuration ssh comme décrit ici: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
il suffit d'ajouter le porte-clés, comme référencé dans conseils rapides Ubuntu https://help.ubuntu.com/community/QuickTips
Ce
au lieu de constamment démarrer ssh-agent et ssh-add, il est possible d'utiliser un porte-clés pour gérer vos clés SSH. Pour installer keychain, vous pouvez simplement cliquer ici, ou utiliser Synaptic pour faire le travail ou apt-get à partir de la ligne de commande.
commande ligne
une autre façon d'installer le fichier est d'ouvrir le terminal (Application->Accessoires->Terminal) et de taper:
sudo apt-get install keychain
Modifier Le Fichier
vous devez alors 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 cela n'a pas vraiment fonctionné pour moi, parce qu'il serait ajouter mes clés à chaque fois que j'ai ouvert un nouvel onglet dans mon terminal. Je l'ai donc modifié un peu(notez que la plupart de mes clés sont également protégées par un mot de passe, donc je ne peux 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
ce que cela fait est qu'il vérifie la sortie de ssh-add -l
(qui liste Toutes les clés qui ont été ajoutées) pour une clé spécifique et si elle ne le trouve pas, alors il l'ajoute 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 et on ne me le demande plus tant que je n'ai pas redémarré(ou déconnecté - Je n'ai pas vérifié) mon ordinateur.
depuis que j'ai un tas de touches, je stocke la sortie de ssh-add -l
dans une variable pour améliorer les performances(au moins je suppose qu'elle améliore les performances:))
PS: je suis sous linux et ce code est passé dans mon fichier ~/.bashrc
- si vous êtes sous Mac OS X, alors je suppose que vous devriez l'ajouter à .zshrc
ou .profile
1519120920"
EDIT:
Comme l'a souligné @Aaron dans les commentaires, le fichier .zshrc
est utilisé à partir de l'interpréteur de commandes 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 Permissionssur le fichier de configuration devraient être de 600.
chmod 600 config
comme indiqué dans les commentaires ci-dessus par généralopinion
pas besoin de toucher au contenu du fichier de configuration.
sur Ubuntu 14.04 (peut-être plus tôt, peut-être encore) vous n'avez même pas besoin de la console:
- démarrer
seahorse
ou de lancer cette chose que vous trouvez à la recherche des "" - créer une clé SSH là (ou en importer une)
- pas besoin de quitter la passphrase vide
- il vous est même proposé de pousser la clé publique sur un serveur (ou plus)
- vous finirez avec un agent ssh en cours d'exécution et cette clé chargée, mais verrouillée
- utilisant
ssh
récupérera l'identité (c'est-à-dire la clé) par l'intermédiaire de l'agent - lors de la première utilisation pendant la session, la phrase de passe sera cochée
- et vous avez l'option de déverrouiller automatiquement la clé lors de la connexion
- cela signifie que l'autorisation de connexion sera utilisée pour envelopper la phrase de passe de la clé
- note: si vous souhaitez transmettre votre identité (c'est-à-dire l'envoi par un agent), invoquez votre
ssh
avec-A
ou faites que la valeur par défaut- sinon vous ne pouvez pas vous authentifier avec cette clé sur une machine que vous connectez plus tard à une troisième machine
très simple ^ _ ^ deux étapes
1.yum install trousseau
2.ajouter le code ci-dessous à .bash_profile
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
ajoutant les lignes suivantes dans"~/.bashrc" a résolu le problème pour moi. J'utilise Ubuntu 14.04 desktop.
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)"
ça a marché pour moi.
ssh-agent /bin/sh
ssh-add /path/to/your/key
J'exécute Ubuntu en utilisant deux clés id_rsa. (une personnelle pour le travail). ssh-add se souviendrait d'une clé (personnelle) et d'oublier l'entreprise une à chaque fois.
en regardant la différence entre les deux j'ai vu que ma clé personnelle avait 400 droits tandis que la société un avait 600 droits. (a u+w). Supprimer l'utilisateur écrire droit de la clé de la société (u-w ou mis à 400) a corrigé mon problème. ssh-add se souvient maintenant des deux clés.
pour ceux qui utilisent la coquille de poisson, vous pouvez utiliser la fonction suivante puis l'appeler en ~/.config/poisson/config.poisson. Il chargera toutes les clés qui commencent par id_rsa 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 l'auto ssh-agent
démarre lorsque vous ouvrez un terminal, vous pouvez utiliser tuvistavie/fish-ssh-agent pour ce faire.
j'ai eu le même problème sur Ubuntu 16.04: certaines touches ont été ajoutées en permanence, pour d'autres j'ai dû exécuter ssh-add
sur chaque session. J'ai découvert que les clés qui étaient ajoutées de façon permanente avaient des clés privées et publiques situées dans ~/.ssh
et que les clés qui étaient oubliées à chaque session n'avaient que des clés privées dans ~/.ssh
dir. Ainsi la solution est simple: vous devez copier à la fois clé privée et publique à ~/.ssh
avant d'exécuter ssh-add
.