Comment puis-je ajouter définitivement ma clé privée SSH à Keychain afin qu'elle soit automatiquement disponible pour ssh?


421

Il semble que ssh-add -K ~/.ssh/id_rsacela chargera votre clé mais vous demandera le mot de passe à chaque redémarrage.

Je recherche une solution qui ne m'oblige pas à ressaisir la clé de mot de passe entre les connexions.


1
Pouvez-vous en dire un peu plus sur le moment où l'invite de mot de passe s'affiche pour vous? Je le demande parce que j'ai une clé ssh pour un serveur distant, ce qui, je vous assure, n'est pas le même que mon mot de passe de connexion Mac ou quoi que ce soit, et je n'ai pas eu à entrer le mot de passe pour la clé ssh depuis des années . Je peux simplement ouvrir un terminal, tapez "ssh <serveur>", et je suis là. Je pense que j'ai d'abord configuré cette clé sous OSX 10.5. id_dsa, mais je ne pense pas que cela devrait compter.
Michael H.

Ma id_rsaclé a un mot de passe dessus.
sorin

J'ai aussi le problème d'avoir résolu ce problème il y a si longtemps que je ne me souviens pas exactement de ce que j'ai fait. Mais je pense que l’idée est de ne pas courir ssh-add, mais juste de courir sshdirectement. Vous devriez avoir une fenêtre qui apparaîtra comme mot de passe pour la clé et avec une case à cocher pour vous permettre de la stocker dans votre trousseau.
Harald Hanche-Olsen le

1
@Sorin - le mien aussi! Je devais y entrer une fois, il y a longtemps, et le Mac me l'a sauvegardé depuis. J'espère que les conseils de Harald aideront.
Michael H.

Voulez-vous dire le mot de passe du trousseau (c'est-à-dire votre mot de passe de connexion) ou la phrase secrète de la clé? Si c’est le dernier cas, vos mots de passe sont-ils définitivement stockés dans le trousseau? Vous pouvez vérifier cela en ouvrant le trousseau d'accès et en le cherchant dans le trousseau de connexion.
Mathew Hall

Réponses:


689

Sur OSX, le ssh-addclient natif a un argument spécial pour enregistrer la phrase secrète de la clé privée dans le trousseau OSX, ce qui signifie que votre connexion normale le déverrouillera pour l'utiliser avec ssh. Sur OSX Sierra et les versions ultérieures, vous devez également configurer SSH pour qu'il utilise toujours le trousseau (voir l'étape 2 ci-dessous).

Sinon, vous pouvez utiliser une clé sans phrase secrète, mais si vous préférez une sécurité qui est certainement acceptable avec ce flux de travail.

Étape 1 - Stockez la clé dans le trousseau

Il suffit de faire ceci une fois:

ssh-add -K ~/.ssh/[your-private-key]

Entrez votre mot de passe clé et vous ne serez plus invité à le faire.

(Si vous utilisez une version d'OSX antérieure à Sierra, vous avez terminé, l'étape 2 n'est pas requise.)

Étape 2 - Configurez SSH pour toujours utiliser le trousseau

Il semble qu'OSX Sierra ait supprimé le comportement pratique consistant à conserver vos clés entre les connexions, et que la mise à jour vers ssh n'utilise plus le trousseau par défaut. De ce fait, vous serez invité à entrer la phrase secrète d'une clé après la mise à niveau, et à nouveau après chaque redémarrage.

La solution est assez simple et est décrite dans ce commentaire du fil de discussion github . Voici comment vous le configurez:

  1. Assurez-vous d'avoir terminé l'étape 1 ci-dessus pour stocker la clé dans le trousseau.

  2. Si ce n'est déjà fait, créez un ~/.ssh/configfichier. En d' autres termes, dans le .sshrépertoire dans votre répertoire personnel , créez un fichier appelé config.

  3. Dans ce .ssh/configfichier, ajoutez les lignes suivantes:

    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
    

    Passez ~/.ssh/id_rsaau nom de fichier réel de votre clé privée. Si vous avez d'autres clés privées dans votre ~.sshrépertoire, ajoutez également une IdentityFileligne pour chacune d'entre elles. Par exemple, j'ai une ligne supplémentaire qui lit IdentityFile ~/.ssh/id_ed25519une 2e clé privée.

    La UseKeychain yesest la partie clé, qui indique à SSH de rechercher dans votre trousseau OSX la phrase secrète de la clé.

  4. C'est ça! Lors du prochain chargement d'une connexion ssh, il essaiera les clés privées que vous avez spécifiées et recherchera leur phrase secrète dans le trousseau OSX. Aucun mot de passe composé requis.


2
Cela a presque fonctionné pour moi. Le verrouillage automatique de mon trousseau "login" étant déjà désactivé, la réponse de Matthew Sanabria n'a pas été appliquée. L'utilisation de l' ssh-add -K ...ajout des clés à l'agent ssh sans demander de mot de passe, mais uniquement pour la session en cours. Après un redémarrage, je devais réémettre la commande.
Poulsbo

4
@Poulsbo & @Abram - voir ma mise à jour, Sierra a changé le comportement automatique et vous devez maintenant exécuter ssh-add -Amanuellement pour charger votre trousseau enregistré. Quelques solutions possibles référencées ci-dessus.
Trisweb

3
@trisweb Merci pour le tuyau. La solution de Joshbuchea consistant à modifier le .ssh/configfichier semble prometteuse! Voir github.com/lionheart/openradar-mirror/issues/…
Poulsbo

2
@sorin voir la réponse mise à jour, et laissez-moi savoir si vous avez des commentaires. Merci!
Trisweb

9
Fonctionne très bien! Dans mon cas, je devais utiliser le Adrapeau en plus de Kcelui pour ajouter mes clés au trousseau et enregistrer la phrase secrète dans celui-ci ( ssh-add -AK ~/.ssh/[your-private-key]). Merci!
Youssman

22

J'ai eu un problème similaire, dans le sens où on me demandait CHAQUE FOIS mon mot de passe composé clé-pub.

Par suggestion de l'utilisateur "trisweb" ci-dessus, j'ai activé ces options pour ~ / .ssh / config:

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

MAIS il m'a toujours demandé chaque fois que je voulais utiliser ssh.

Finalement, j'ai activé "ssh -v" et trouvé cette ligne de débogage:

debug1: key_load_private: phrase secrète incorrecte fournie pour déchiffrer la clé privée

J'ai ensuite ouvert mon trousseau dans "Keychain Access.app", trouvé la clé nommée "SSH: /Users/username/.ssh/id_rsa" et je l'ai ouverte.

J'ai cliqué sur "Afficher le mot de passe" pour divulguer le mot de passe et j'ai en effet constaté que la phrase secrète du trousseau de clés était une ancienne phrase secrète.

J'ai mis à jour la phrase secrète dans Keychain Access, et fonctionne maintenant sans mot de passe.

J'aurais aussi pu mettre à jour le mot de passe avec cette phrase:

ssh-keygen -p -f ~ / .ssh / id_rsa


13

Vous êtes invité à entrer le mot de passe à chaque fois parce que votre trousseau de "connexion" est verrouillé après une inactivité et / ou une mise en veille ou, dans votre cas, un redémarrage. Il y a deux façons de résoudre ce problème pour vous.

  1. Modifiez les paramètres de votre trousseau de "connexion". En supposant que votre clé ssh soit stockée dans le trousseau "login".

    • Accès au trousseau ouvert
    • Mettez en surbrillance le trousseau "login"
    • Faites un clic droit ou une option sur le trousseau "login"
    • Décochez les cases "Verrouiller après X minutes d'inactivité" et "Verrouiller pendant le sommeil".
  2. Générez une autre clé SSH sans utiliser de phrase secrète.

    • Terminal ouvert.
    • Entrez la commande: ssh-keygen -t rsa -b 4096 -C <comment> -f <.ssh/id_rsa>
    • -t est pour le type, -b est la taille de la clé, -C est un commentaire, -f fichier de sortie (doit d'abord créer des répertoires)
    • Ne définissez pas de phrase secrète.
    • Importer la clé SSH dans le "login" trousseau avec ssh-add -K <path to ssh key>

Vous ne devriez plus être invité à entrer un mot de passe de trousseau.


2
Notez que lorsque vous appelez ssh-adddepuis SSH, vous security unlock-keychaindevez être appelé en premier. De plus, je n'ai pas eu à créer les répertoires pour le -fparamètre. Malheureusement, je devais quand même appeler des security unlocl-keychainsessions SSH pour accéder au trousseau de connexion, qui demande un mot de passe à chaque fois ...
Ohad Schneider

2
L’essentiel est d’avoir un mot de passe sur la clé. Je doute que générer une nouvelle clé SSH soit utile à la question.
Gris

7

De plus, dans macOS Sierra et HighSierra (je ne connais pas les versions précédentes), l'exécution ssh-add -Apermettra à l'agent de charger toutes les clés dont les phrases secrètes sont stockées sur le trousseau ... Donc, très pratique


7

Pour tout ce qui précède où ne fonctionne pas, mon problème semble avoir été parce que je dupliquant les UseKeychain yes& AddKeysToAgent yesdans tous les profils / ssh raccourcis clavier. J'ai mis à jour mon ~/.ssh/configfichier pour ne les déclarer qu'une seule fois et ils se chargent tous à la connexion sans demander de mot de passe au démarrage, par exemple:

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/foo
  IdentityFile ~/.ssh/bar

Host foo
  HostName foo.com
  User fooUser
  IdentityFile ~/.ssh/foo

Host bar
  HostName bar.com
  User barUser
  IdentityFile ~/.ssh/bar

-3

Ajouter la clé publique dans:

.ssh/known_hosts

Les clés publiques sont généralement sur:

/home/user/.ssh/id_rsa.pub

J'espère que ça t'as aidé


8
Je pense direauthorized_keys
Rene Larsen

Quoi qu'il en soit, cela ne fonctionne pas si vous avez plus d'une clé!
sorin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.