2009-12-28 12:08:48 +0000 2009-12-28 12:08:48 +0000
143
143

Comment utiliser le porte-clés de Mac OS X avec des clés SSH ?

Je crois savoir que depuis Mac OS X Leopard, le porte-clés permet de stocker des clés SSH. Quelqu'un pourrait-il m'expliquer comment cette fonctionnalité est censée fonctionner ?

J'ai quelques clés RSA que j'ai générées et qui sont stockées dans mon répertoire ~/.ssh pour accéder à différents serveurs. Je n'ai pas de phrases de passe définies sur ces clés. Actuellement, pour me connecter à ces serveurs, j'utilise les commandes suivantes dans le Terminal :

eval `ssh-agent` ssh-add ~/.ssh/some\_key\_rsa ssh user@server

(J'ai écrit quelques fonctions Bash pour faciliter la tâche.)

Y a-t-il une meilleure façon de faire cela en utilisant le porte-clés ?

Réponses (9)

255
255
255
2011-04-11 19:58:42 +0000

Depuis la sortie de Leopard sous OS X, ssh-agent est plus étroitement intégré au Keychain. Il est possible de stocker les phrases de passe de toutes vos clés SSH en toute sécurité dans Keychain, à partir duquel ssh-agent les lira au démarrage. En fin de compte, il est simple de sécuriser vos clés avec des phrases de passe, mais vous n'avez jamais besoin de taper la phrase de passe pour les utiliser ! Voici comment :

Ajoutez la phrase de passe à chaque clé ssh du porte-clés : (l'option -k charge uniquement les clés privées ordinaires, ignore les certificats)

ssh-add -K [path/to/private SSH key]

(notez que c'est un K majuscule)

Chaque fois que vous redémarrez votre Mac, toutes les clés SSH de votre porte-clés seront automatiquement chargées. Vous devriez pouvoir voir les clés dans l'application Keychain Access, ainsi qu'à partir de la ligne de commande via :

ssh-add -l
82
82
82
2016-12-12 18:17:44 +0000

À partir de macOS Sierra, ssh-agent ne charge plus automatiquement les clés ssh précédemment chargées lorsque vous vous connectez à votre compte. Ceci est intentionnel de la part d'Apple, qui a voulu s'aligner sur l'implémentation OpenSSH. [1]


Comme expliqué ici , c'est la méthode recommandée depuis macOS 10.12.2 :

  1. Ajoutez les lignes suivantes à votre fichier ~/.ssh/config :

  2. Toute clé que vous ajoutez au ssh-agent en utilisant la commande ssh-add /path/to/your/private/key/id_rsa sera automatiquement ajoutée au trousseau de clés, et devrait être chargée automatiquement au redémarrage.


Ce qui suit est déprécié (conservé à titre de référence).

Pour revenir au comportement précédent, vous voudriez exécuter la commande ssh-add -A (qui charge automatiquement toutes les clés ssh qui ont des phrases de passe sur votre trousseau de clés) lorsque vous vous connectez. Pour ce faire, suivez les étapes suivantes :

  1. d'abord, ajoutez toutes les clés que vous voulez charger automatiquement dans le ssh-agent en utilisant la commande ssh-add -K /absolute/path/to/your/private/key/id_rsa. L'argument -K garantit que la phrase de passe de la clé est ajoutée au porte-clés macOS. Assurez-vous d'utiliser le chemin absolu vers la clé. L'utilisation d'un chemin relatif fera en sorte que le script lancé automatiquement ne trouvera pas votre clé.

  2. Assurez-vous que toutes vos clés sont affichées comme étant ajoutées lorsque vous tapez ssh-add -A.

  3. Créez un fichier appelé com.yourusername.ssh-add.plist dans ~/Library/LaunchAgents/ avec le contenu ci-dessous. Les fichiers Plist tels que celui-ci sont utilisés par launchd pour exécuter des scripts lorsque vous vous connectez. [2] [3]

  4. Dites à launchd de charger le fichier de liste que vous venez de créer en vous exécutant : launchctl load ~/Library/LaunchAgents/com.yourusername.ssh-add.plist.

Et vous devriez être prêt.

34
34
34
2017-01-05 18:53:54 +0000

Il existe un moyen plus simple que la réponse de Ricardo de persister votre mot de passe entre les sessions / redémarrages de votre Mac exécutant 10.12 Sierra.

  1. ssh-add -K ~/.ssh/id_rsa Note : changez le chemin d'accès à l'endroit où se trouve votre clé id_rsa.
  2. ssh-add -A
  3. Créez (ou modifiez s'il existe) le fichier ~/.ssh/config suivant :

Apple a délibérément modifié le comportement de ssh-agent dans macOS 10.12 Sierra pour ne plus charger automatiquement les clés SSH précédentes, comme indiqué dans cette OpenRadar , Discussion Twitter , et Note technique d'Apple . La solution ci-dessus imitera l'ancien comportement d'El Capitan et permettra de se souvenir de votre mot de passe.

17
17
17
2009-12-28 17:37:32 +0000

Pour que cela fonctionne, la variable d'environnement $SSH_AUTH_SOCK doit être pointée sur /tmp/launch-xxxxxx/Listeners. Cela est censé se faire automatiquement lorsque vous vous connectez. L'auditeur sur cette socket parle le protocole ssh-agent.

Vos scripts bash lancent votre propre agent ssh (orthographié ssh-agent, pas ssh_agent) et remplacent le ssh-agent existant qui est configuré pour vous lors de la connexion.

Aussi, le but du porte-clés est de stocker les mots de passe de vos clés ssh, mais vous dites que vous n'avez pas de phrases de passe sur ces clés, donc je ne suis pas sûr de ce que vous attendez de l'intégration du porte-clés.

Enfin, lorsque vous vous connecterez pour la première fois, vous ne verrez probablement pas de processus ssh-agent. Ce processus sera lancé automatiquement par les services de lancement la première fois que quelque chose essaiera de lire cette socket dans /tmp.

10
10
10
2011-04-28 13:28:40 +0000

Note : pour macOS Sierra, veuillez vous référer à la plus récente réponse de ChrisJF .

La [réponse de Jeff McCarrell][2] est correcte, sauf que la commande d'ajout de la phrase de passe contient un tiret au lieu d'un trait d'union, c'est-à-dire –K au lieu de -K, provoquant un message à l'effet de –K: No such file or directory. Il devrait se lire :

ssh-add -K [path/to/private SSH key]
6
6
6
2013-10-14 12:29:41 +0000

J'ai eu un problème similaire en essayant de me connecter en utilisant un client ssh cert. Dans ce cas précis, il s'agissait d'accéder à un dépôt git. C'était la situation :

  • La clé a été enregistrée dans ~/.ssh/
  • La clé privée a une phrase de passe.
  • La phrase de passe est stockée dans le porte-clés de connexion OS X. ~/Library/Keychains/login.keychain
  • La connexion était la suivante : mon mac -> remote mac -> git/ssh server
  • Mac OS X 10.8.5

  • Lorsque je me suis connecté à remote mac en utilisant remote desktop, je n'ai pas eu de problème. Cependant, lorsque je me suis connecté avec SSH au mac distant, on m'a demandé la phrase de passe ssh à chaque fois. Les étapes suivantes l'ont résolue pour moi.

  1. security unlock-keychain La phrase de passe est stockée dans le porte-clés de connexion. Cela la déverrouille et permet à ssh-agent d'y accéder.
  2. evalssh-agent -s`` Démarre ssh-agent pour l'utilisation du shell. Il récupère la phrase de passe du porte-clés et l'utilise pour déverrouiller la clé privée ssh.
  3. Établir la connexion ssh/git et faire mon travail.
  4. evalssh-agent -k`` Tue l'agent ssh en cours d'exécution.
  5. security lock-keychain Verrouillez à nouveau le porte-clés.
6
6
6
2009-12-28 12:55:13 +0000

Je soupçonne que vous n'utilisez pas la commande ssh par défaut. Avez-vous ssh installé via les ports ? Essayez which ssh pour voir quelle commande ssh vous utilisez.

Habituellement, une boîte de dialogue devrait s'afficher pour vous demander votre mot de passe, s'il n'est pas déjà stocké dans votre porte-clés.

4
4
4
2014-03-26 09:45:49 +0000

Voir aussi :

security import priv_key.p12 -k ~/Library/Keychains/login.keychain
security import pub_key.pem -k ~/Library/Keychains/login.keychain

… en ajoutant cette note car plus de détails ont été demandés : la commande “security” est capable d'importer des clés (et d'autres choses) directement dans les porte-clés. Ce qui est bien, c'est que contrairement à ssh-add, vous pouvez spécifier le porte-clés. Cela permet d'importer directement dans le système Keychain (“man security” pour savoir comment)

1
1
1
2017-01-26 10:39:16 +0000

La meilleure solution (depuis macOS 10.12.2) est décrite ici

Il suffit donc de faire ce qui suit :

echo “UseKeychain yes” >> ~/.ssh/config