Il semble que ssh-add -K ~/.ssh/id_rsa
chargera votre clé mais vous demandera le mot de passe à chaque redémarrage.
Je cherche une solution qui ne m'obligerait pas à saisir à nouveau le mot de passe clé entre deux connexions.
Il semble que ssh-add -K ~/.ssh/id_rsa
chargera votre clé mais vous demandera le mot de passe à chaque redémarrage.
Je cherche une solution qui ne m'obligerait pas à saisir à nouveau le mot de passe clé entre deux connexions.
Il n'est pas possible d'ajouter la clé privée au trousseau, mais vous pouvez stocker la phrase de passe pour la clé privée dans le trousseau. Sous OSX, la fonction native ssh-add
a un argument spécial pour enregistrer la phrase de passe de la clé privée dans le trousseau OSX, ce qui signifie que votre connexion normale la 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).
Vous pouvez également utiliser une clé sans phrase de passe, mais si vous préférez la sécurité, c'est certainement acceptable avec ce flux de travail.
Dans la dernière version de MacOS (12.0 Monterey), faites-le une seule fois :
ssh-add --apple-use-keychain ~/.ssh/[your-private-key]
Ou dans les versions de MacOS antérieures à 12.0 Monterey, utilisez :
ssh-add -K ~/.ssh/[your-private-key]
Entrez la phrase de passe de votre clé, et elle ne vous sera plus demandée.
(Si cela échoue, assurez-vous que vous utilisez la version d'Apple de /usr/bin/ssh-add
et non quelque chose d'installé avec brew etc. ; vérifiez avec which ssh-add
)
(Note : Dans les versions d'OSX antérieures à Sierra, ceci n'est pas nécessaire)
Il semble qu'OSX Sierra ait supprimé la possibilité pratique de conserver vos clés entre les connexions, et la mise à jour de ssh n'utilise plus le trousseau par défaut. Pour cette raison, vous devez changer une chose de plus pour sécuriser le stockage persistant des clés.
La solution est décrite dans ce commentaire sur le fil de discussion github . Voici ce que vous devez faire :
Assurez-vous que vous avez effectué l'étape 1 ci-dessus pour stocker la phrase de passe dans le trousseau.
Si vous ne l'avez pas encore fait, créez un ~/.ssh/config
fichier. En d'autres termes, dans le .ssh
dans votre répertoire personnel, créez un fichier appelé config
.
Dans ce .ssh/config
ajoutez les lignes suivantes :
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
Changement ~/.ssh/id_rsa
au nom de fichier réel de votre clé privée. Si vous avez d'autres clés privées dans votre ~/.ssh
ajoutez également un IdentityFile
pour chacun d'entre eux. Par exemple, j'ai une ligne supplémentaire qui se lit comme suit IdentityFile ~/.ssh/id_ed25519
pour une deuxième clé privée.
El UseKeychain yes
est la partie clé, qui indique à SSH de chercher la phrase de passe de la clé dans votre trousseau OSX.
C'est ça ! La prochaine fois que vous lancerez une connexion ssh, elle essaiera les clés privées que vous avez spécifiées et cherchera leur phrase de passe dans le trousseau d'OSX. Il n'est pas nécessaire de taper la phrase de passe.
Ça a presque marché pour moi. Le verrouillage automatique était déjà désactivé dans mon trousseau de clés "login". La réponse de Matthew Sanabria ne s'appliquait donc pas. Utilisation de ssh-add -K ...
a ajouté les clés à l'agent ssh sans demander de mot de passe, mais seulement pour la session en cours. Après un redémarrage, j'ai dû relancer la commande.
D'une manière ou d'une autre, je fais le ssh-add -K et cela fonctionne pendant un certain temps puis, soudainement, on me demande à nouveau un mot de passe. Je ne sais pas si cela a à voir avec iterm ou avec mes mises à jour de zsh ?
@Poulsbo & @Abram -- voir ma mise à jour, Sierra a changé le comportement automatique et maintenant vous devez exécuter ssh-add -A
manuellement pour charger votre trousseau enregistré. Quelques solutions possibles référencées ci-dessus.
J'ai eu un problème similaire, dans la mesure où on m'a demandé à chaque fois pour ma phrase de passe de clé publique. Selon la 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 y a toujours un message à chaque fois que je veux utiliser ssh. Finalement, j'ai activé ssh -v
et j'ai trouvé cette ligne de débogage :
debug1: key_load_private: incorrect passphrase supplied to decrypt private key
J'ai ensuite ouvert mon trousseau dans "Keychain Access.app", trouvé la clé nommée "SSH : /Users/username/.ssh/id_rsa" et l'ai ouverte. J'ai cliqué sur "Show password" pour dévoiler le mot de passe et j'ai effectivement constaté que la phrase de passe dans le trousseau était une ancienne phrase de passe. J'ai mis à jour la phrase de passe dans Keychain Access, et maintenant l'absence de mot de passe fonctionne.
J'aurais aussi pu mettre à jour la phrase de passe avec cette phrase :
ssh-keygen -p -f ~/.ssh/id_rsa
À tous ceux pour qui les solutions ci-dessus n'ont pas fonctionné, il semble que mon problème soit dû au fait que je dupliquais le processus d'authentification. UseKeychain yes
& AddKeysToAgent yes
dans tous les profils / raccourcis de clés ssh. J'ai mis à jour mon ~/.ssh/config
pour ne les déclarer qu'une seule fois et ils se chargent maintenant tous lors de la connexion sans demander de mot de passe au démarrage, par ex :
Host foo
HostName foo.com
User fooUser
IdentityFile ~/.ssh/foo
Host bar
HostName bar.com
User barUser
IdentityFile ~/.ssh/bar
########################
# Keep the default configuration
# as the last item in this file
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/foo
IdentityFile ~/.ssh/bar
Je recommande Host *
être après des règles spécifiques de l'hôte. Voir man ssh_config
pour les détails.
Merci beaucoup pour cela. Où se trouve la documentation à ce sujet, c'est-à-dire comment avez-vous procédé ?
...en fait, cela n'a pas fonctionné pour moi : J'ai une configuration où Host bar a aussi le HostName foo.com (c'est-à-dire deux configurations différentes pour le même site). IdentityFile ~/.ssh/foo
a toujours été utilisé. Pour corriger, j'ai dû déplacer la section Host * vers le bas, comme le suggère @FranklinYu. Je pense que c'est parce que > Pour chaque paramètre, la première valeur obtenue sera utilisée. linux.die.net/man/5/ssh_config
De même, dans MacOS Sierra et High Sierra (je ne sais pas pour les versions précédentes), l'exécution de la commande ssh-add -A
permettra à l'agent de charger toutes les clés dont la phrase de passe est stockée dans le trousseau... Donc très pratique
Notez que ces drapeaux d'option ont été renommés et que les anciens ont été dépréciés. dans les versions ultérieures de MacOS. Depuis le ssh
page de manuel :
APPLE_SSH_ADD_BEHAVIOR
Active ou désactive l'ancien traitement des l'adresse-A
y-K
utilisées dans les versions antérieures de MacOS. Ces options ont été renommées--apple-load-keychain
y--apple-use-keychain
respectivement.
Cependant,-A
y-K
toujours se comporter comme dans les versions précédentes sauf dans les circonstances suivantes :
- Si un fournisseur de sécurité était spécifié avec
-S
ou SSH_SK_PROVIDER, ou si APPLE_SSH_ADD_BEHAVIOR a la valeur "openssh". est défini comme ayant la valeur "openssh", alorsssh-add
utilise le standard OpenSSH le comportement-A
n'est pas reconnu et l'option-K
se comporte comme documenté dans la section DESCRIPTION ci-dessus.- Autrement,
ssh-add -A
y-K
se comportera comme dans les versions antérieures de MacOS. Un avertissement sera émis sur l'erreur standard à moins que APPLE_SSH_ADD_BEHAVIOR ne prenne la valeur "MacOS". Remarque : Futur Les futures versions de MacOS ne supporteront ni-A
ni-K
sans régler cette variable d'environnement.
Vous pouvez maintenant utiliser le drapeau --apple-use-keychain
pour accomplir exactement cela.
ssh-add --apple-use-keychain ~/.ssh/id_rsa
Ajoutez ceci à votre .zshrc
o .bashrc
pour qu'il soit chargé à partir de votre trousseau de clés lors de nouvelles connexions / instances de terminal.
Cela remplace le -K
y -A
drapeaux :
WARNING: The -K and -A flags are deprecated and have been replaced
by the --apple-use-keychain and --apple-load-keychain
flags, respectively. To suppress this warning, set the
environment variable APPLE_SSH_ADD_BEHAVIOR as described in
the ssh-add(1) manual page.
LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.
1 votes
Pouvez-vous en dire un peu plus sur le moment où l'invite de mot de passe s'affiche pour vous ? Je demande cela parce que j'ai une clé ssh pour un serveur distant, qui, je vous l'assure, n'est pas la même que mon mot de passe de connexion Mac ou autre, et je n'ai pas eu à entrer le mot de passe de la clé ssh depuis années . Je peux simplement ouvrir un terminal, taper "ssh <server>", et j'y suis. Je pense que j'ai d'abord configuré cette clé sous OSX 10.5. id_dsa, mais je pense que cela ne devrait pas avoir d'importance.
0 votes
Mon
id_rsa
a un mot de passe.0 votes
J'ai aussi le problème suivant : j'ai résolu ce problème il y a si longtemps que je ne me souviens plus exactement de ce que j'ai fait. Mais je pensez à l'idée est de no exécuter
ssh-add
mais il suffit d'exécuterssh
directement. Une fenêtre devrait s'ouvrir, contenant la phrase de passe de la clé et une case à cocher permettant de la stocker dans votre trousseau.1 votes
@Sorin - le mien aussi ! J'ai dû le saisir une fois, il y a longtemps, et le Mac l'a gardé pour moi depuis. J'espère que les conseils d'Harald vous aideront.
0 votes
Voulez-vous dire le mot de passe du trousseau (c'est-à-dire votre mot de passe de connexion) ou la phrase de passe de la clé ? Si c'est le dernier, vos phrases de passe sont-elles définitivement stockées dans Keychain ? Vous pouvez le vérifier en ouvrant Keychain Access et en le recherchant dans le trousseau de connexion.
0 votes
ssh - authorized_keys HOWTO (en anglais) fr.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html
0 votes
Je fais ça pour le résoudre, réf : unix.stackexchange.com/a/560404/388990 J'espère que cela fonctionnera, merci
0 votes
Je fais ça pour le résoudre, réf : unix.stackexchange.com/a/560404/388990 J'espère que cela fonctionnera, merci
0 votes
@ToniFirnandes Les instructions que vous indiquez sont dépassées. Il faut utiliser la réponse acceptée ci-dessous.