Je comprends que depuis Mac OS X Leopard, le trousseau prend en charge le stockage des clés SSH. Quelqu'un pourrait-il s'il vous plaît expliquer comment cette fonctionnalité est censée fonctionner.
J'ai généré des clés RSA stockées dans mon répertoire ~ / .ssh pour accéder à différents serveurs. Je n'ai pas de phrases secrètes 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 utilisateur @ serveur
(J'ai écrit quelques fonctions Bash pour rendre cela plus facile.)
Y at-il une meilleure façon de faire cela en utilisant le trousseau?
ssh-add
pour ajouter mes identités RSA à l'agent ssh par défaut démarré à la connexion?$HOME/.ssh/authorized_keys
sur ce serveur. Le trousseau ssh-agent + de Mac OS n’est utilisé que pour stocker la phrase secrète de vos clés ssh locales; il n'est pas destiné à envoyer des mots de passe distants via des connexions ssh existantes.ssh -v
pour diagnostiquer ce que ssh fait. utilisez égalementsshd -p 8900 -v
côté serveur etssh -v remote:8900
pour diagnostiquer ce que fait sshd.Depuis la version OS X de Leopard, ssh-agent est plus étroitement intégré à Keychain. Il est possible de stocker les phrases secrètes de toutes vos clés SSH en toute sécurité dans Keychain, à partir duquel ssh-agent les lira au démarrage. L'essentiel, c'est qu'il est simple de sécuriser vos clés avec des phrases secrètes, mais vous n'avez jamais à taper la phrase secrète pour les utiliser! Voici comment:
Ajoutez la phrase de passe à chaque clé ssh du trousseau: (l'option -k charge uniquement les clés privées, ignore les certificats)
(notez que c'est un K majuscule)
Chaque fois que vous redémarrez votre Mac, toutes les clés SSH de votre trousseau seront automatiquement chargées. Vous devriez pouvoir voir les clés dans l'application Keychain Access, ainsi que depuis la ligne de commande via:
la source
ssh-add -l
ne liste aucune clé lors d'une connexion à distance (où $ DISPLAY n'est pas défini). Des astuces spéciales doivent être utilisées ici pour utiliser le trousseau (par exemple, dans superuser.com/questions/141044/… )/usr/bin/ssh-add
.ssh-add -l
renvoie "L'agent n'a aucune identité." (ps aux
inclus/usr/bin/ssh-agent -l
).À 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. C’est intentionnel de la part d’Apple, ils voulaient se ré-aligner sur la mise en œuvre traditionnelle d’ OpenSSH . [1]
Comme expliqué ici , voici la méthode recommandée depuis macOS 10.12.2 :
Ajoutez les lignes suivantes à votre
~/.ssh/config
fichier:Toute clé que vous ajoutez à ssh-agent à l'aide de la
ssh-add /path/to/your/private/key/id_rsa
commande sera automatiquement ajoutée au trousseau et devrait être chargée automatiquement au redémarrage.Ce qui suit est obsolète (conservé pour référence).
Pour revenir au comportement précédent, vous souhaitez exécuter la
ssh-add -A
commande (qui charge automatiquement toutes les clés ssh comportant des phrases de passe sur votre trousseau) lorsque vous vous connectez. Pour cela, procédez comme suit:Tout d’abord, ajoutez toutes les clés que vous souhaitez charger automatiquement dans ssh-agent à l’aide de la
ssh-add -K /absolute/path/to/your/private/key/id_rsa
commande. L'-K
argument garantit que la phrase clé est ajoutée au trousseau de macOS . Assurez-vous d'utiliser le chemin absolu vers la clé. Si vous utilisez un chemin relatif, le script lancé automatiquement ne trouvera pas votre clé.Assurez-vous que toutes vos clés sont affichées comme ajoutées lorsque vous tapez
ssh-add -A
.Créez un fichier
com.yourusername.ssh-add.plist
dans~/Library/LaunchAgents/
le contenu ci - dessous. Les fichiers Plist tels que celui-ci sont utiliséslaunchd
pour exécuter des scripts lorsque vous vous connectez. [2] [3]Dites
launchd
à charger le fichier plist que vous venez de créer en exécutant:launchctl load ~/Library/LaunchAgents/com.yourusername.ssh-add.plist
.Et vous devriez être tous ensemble.
la source
La réponse de Ricardo offre un moyen plus simple de conserver votre mot de passe entre les sessions / redémarrages de votre Mac exécutant 10.12 Sierra.
ssh-add -K ~/.ssh/id_rsa
Remarque: modifiez le chemin d'accès à l'emplacement de votre clé id_rsa.
ssh-add -A
Créez (ou éditez s'il existe) le
~/.ssh/config
fichier suivant :Maintenant, le mot de passe est mémorisé entre les redémarrages!
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 discussion OpenRadar , Twitter et technique de Apple . La solution ci-dessus imitera l'ancien comportement d'El Capitan et retiendra votre mot de passe.
la source
ssh-add -K
procédure pour ajouter ma clé SSH au trousseau Apple, quels sont le nom et le type de l'entrée affichée dans le trousseau Access.app?Remarque: pour macOS Sierra, veuillez vous reporter à la réponse plus récente de ChrisJF .
La [réponse de Jeff McCarrell] [2] est correcte, sauf que la commande pour ajouter la phrase secrète contient un tiret en à la place d'un trait d'union, c'est-à-dire
–K
au lieu de-K
, générant un message à l'effet de–K: No such file or directory
. Il devrait lire:la source
ssh-add -K
illegal option -- K
. K minuscule est répertorié comme une option.-K
Je soupçonne que vous n'utilisez pas la
ssh
commande par défaut . Avez-vousssh
installé via des ports? Essayezwhich ssh
de voir quellessh
commande vous utilisez.Habituellement, il devrait afficher une boîte de dialogue vous demandant votre mot de passe, s'il n'est pas déjà stocké dans votre trousseau.
la source
J'ai eu un problème similaire lors de la connexion à l'aide d'un cert ssh client. Dans ce cas spécifique, c'était pour accéder à un dépôt git. C'était la situation:
~/.ssh/
~/Library/Keychains/login.keychain
->
distant mac->
git / sshLorsque je me suis connecté à un Mac distant en utilisant le Bureau à distance, je n’ai eu aucun problème. Cependant, lors de la connexion avec SSH au Mac distant, le mot de passe ssh m'a été demandé à chaque fois. Les étapes suivantes l'ont résolu pour moi.
security unlock-keychain
La phrase secrète est stockée dans le trousseau de connexion. Cela le déverrouille et permet à ssh-agent d'y accéder.eval `ssh-agent -s`
Démarre ssh-agent pour l'utilisation du shell. Il obtiendra la phrase secrète du trousseau et l'utilisera pour déverrouiller la clé privée ssh.eval `ssh-agent -k`
Tuez le ssh-agent en cours d'exécution.security lock-keychain
Verrouillez à nouveau le trousseau.la source
eval \$(ssh-agent)
chaque connexion et trousseau Re: remote . Lorsqu'il n'est pas dans un alias, celaeval $(ssh-agent)
fonctionne ( sans la barre oblique inverse $ ).Voir également:
... en ajoutant cette note sous forme de détails supplémentaires: la commande "sécurité" permet d'importer des clés (et d'autres éléments) directement dans des trousseaux. La bonne chose est que contrairement à ssh-add, vous êtes en mesure de spécifier le trousseau. Cela permet d’importer directement dans le système Keychain ("sécurité homme" pour savoir comment)
la source
La meilleure solution envisagée par Apple (depuis macOS 10.12.2) est décrite ici.
la source
>>
est à risque si vous entrez la commande plusieurs fois. Mieux vaut faire une édition manuelle du fichier, comme décrit par la réponse de ChrisJF .