Comment ajouter de façon permanente une clé privée avec ssh-add sur Ubuntu? [fermé]

StackOverflow https://stackoverflow.com/questions/3466626

  •  28-09-2019
  •  | 
  •  

Question

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

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

Dans une machine, une fois que je l'utilise « .ssh ssh-add / identité » et mon mot de passe entré, la clé a été ajouté de façon permanente, à savoir, chaque fois que je arrêter l'ordinateur et connectez-vous à nouveau, la clé est déjà ajouté.

Dans l'autre, je dois ajouter la clé à chaque fois de connexion I.

Pour autant que je me souviens, je l'ai fait la même chose à la fois. La seule différence est que la clé a été créée sur celui qui est ajouté de façon permanente.

Quelqu'un sait comment l'ajouter en permanence à l'autre machine ainsi?

Était-ce utile?

La solution

Une solution serait de forcer les fichiers clés à conserver en permanence, en les ajoutant dans votre fichier ~/.ssh/config:

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

Si vous ne disposez pas d'un fichier « config » dans le répertoire ~ / .ssh, vous devez 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 les besoins de fichiers pour avoir chmod 600. Vous pouvez utiliser la commande chmod 600 ~/.ssh/config.

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

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

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

Ceci a l'avantage lorsque vous avez plusieurs identités qu'un serveur ne vous rejetez parce que vous avez essayé les mauvaises identités d'abord. Seule l'identité spécifique sera jugé.

Autres conseils

Cela n'a pas répondu à la même question pour moi sous Mac OS X Lion. J'ai fini par ajouter:

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

Pour ma .zshrc (mais .profile serait bien aussi), qui semble avoir fixé.

(comme le suggère ici: http://geek.michaelgrace.org / 2011/09 / permanence add-ssh-key-ssh-add / )

Je résolu ce problème sous Mac OS X (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 config plus ssh comme décrit ici: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain

Il suffit d'ajouter le trousseau, comme référencé dans Ubuntu Conseils pratiques https://help.ubuntu.com/community/QuickTips

Que

Au lieu de constamment démarrage ssh-agent et ssh-add, il est possible d'utiliser trousseau pour gérer vos clés ssh. Pour installer trousseau, vous pouvez simplement cliquer ici ou utiliser Synaptic pour faire le travail ou apt-get de la ligne de commande.

Ligne de commande

Une autre façon d'installer le fichier est d'ouvrir le terminal (Application-> Accessoires-> Terminal) et tapez:

sudo apt-get install keychain

Modifier 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é @ solution d'Aaron et il n'a pas tout à fait travailler pour moi, parce que ce serait ajouter à nouveau mes clés à chaque fois que j'ai ouvert un nouvel onglet dans mon terminal. Donc, je l'ai modifié un peu (notez que la plupart de mes clés sont également protégées par mot de passe, donc je ne peux pas envoyer la sortie juste à / 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 énumère toutes les clés qui ont été ajoutées) pour une clé spécifique et si elle ne le trouve pas, il ajoute avec ssh-add.

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

Depuis que je suis un trousseau de clés je stocker la sortie de ssh-add -l dans une variable pour améliorer les performances (au moins je suppose qu'il améliore la performance :))

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

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

la solution est dans mon cas:

  

autorisations sur le fichier de configuration doit ê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 touches ont été ajoutées en permanence, pour les autres que je devais exécuter ssh-add à chaque session. Je trouve que les clés qui ont été ajoutés de façon permanente avait à la fois la clé privée et publique située dans ~/.ssh et les clés qui ont été oubliées à chaque session, il avait seulement des clés privées dans ~/.ssh dir. Donc, la solution est simple. Vous devez copier deux clé privée et publique à ~/.ssh avant d'exécuter ssh-add

Sur Ubuntu 14.04 (peut-être plus tôt, peut-être encore) vous ne même pas besoin de la console:

  • start seahorse ou le lancement de cette chose que vous trouvez la recherche de « clé »
  • créer une clé SSH, il (ou une importation)
    • pas besoin de quitter la passphrase
    • il vous est proposé de pousser encore la clé publique à un serveur (ou plus)
  • vous finirez avec un courant ssh-agent et cette clé chargée, mais verrouillé
  • à l'aide de micro volonté de ssh l'identité (par exemple la touche) à travers l'agent
  • de la première utilisation au cours de la session, le mot de passe sera vérifiée
    • et vous avez la possibilité de déverrouiller automatiquement la clé de connexion
    • cela signifie que l'auth de connexion sera utilisée pour envelopper le mot de passe de la clé
  • Remarque: si vous souhaitez transférer votre identité (à savoir-agent de transfert) Invoke votre ssh avec -A ou faire que la valeur par défaut
    • sinon vous ne pouvez pas authentifier avec cette touche sur une machine plus tard vous vous connectez à une troisième machine

Je lance Ubuntu en utilisant deux id_rsa de clés. (Un personnelle pour le travail). ssh-add se souviendrait d'une clé (personnelle) et d'oublier la société un à chaque fois.

Vérification de la différence entre les deux je vis ma clé personnelle avait 400 droits tandis que celui de l'entreprise comptait 600 droits. (A u + w). Retrait du droit d'écriture de l'utilisateur de la clé de l'entreprise (u-w ou ensemble à 400) fixé mon problème. ssh-add se souvient maintenant les deux touches.

Ajout des lignes suivantes dans « ~ / .bashrc » a résolu le problème pour moi. J'utilise 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)"

très simple ^ _ ^ deux étapes

1.yum installer trousseau

2.Ajoutez le code ci-dessous pour .bash_profile

/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh

Cela a fonctionné pour moi.

ssh-agent /bin/sh
ssh-add /path/to/your/key

Pour ceux qui utilisent shell poisson, vous pouvez utiliser la fonction suivante puis appelez-le dans ~ / .config / poissons / config.fish. Il se chargera de 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 avoir l'auto ssh-agent a commencé lorsque vous ouvrez un terminal, vous pouvez utiliser tuvistavie / poisson-ssh-agent pour le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top