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?

371
demandé sur slicedtoad 2010-08-12 14:13:38

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

485
répondu daminetreg 2014-08-19 05:45:21

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

98
répondu Aaron 2012-08-06 16:22:14

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

88
répondu totas 2018-06-25 09:25:07

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
25
répondu Christian Saiki 2016-05-16 14:32:53

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 .

15
répondu Nikola Ivanov Nikolov 2014-05-28 21:00:53

dans mon cas la solution était:

Les Permissions

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

11
répondu erezmta 2014-05-19 09:37:35

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
3
répondu Robert Siemer 2014-11-06 19:36:53

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
3
répondu LawrenceLi 2016-02-03 11:45:59

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)"
2
répondu reynoldpj 2015-05-13 15:55:48

ça a marché pour moi.

ssh-agent /bin/sh
ssh-add /path/to/your/key
2
répondu Jaseem Abbas 2017-04-02 06:47:40

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.

1
répondu Fholst 2017-01-24 22:12:39

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.

1
répondu frederickjh 2017-12-30 15:12:01

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 .

0
répondu NShiny 2018-07-10 15:29:29