J'utilise Mac OS X Lion et je me connecte à des hôtes distants via SSH tous les jours. Malgré le fait que j'utilise une paire de clés SSH pour l'authentification à distance et que je n'ai pas besoin de motoriser la phrase de connexion de chaque hôte, il est toujours très ennuyeux que le terminal demande la phrase secrète pour accéder à ma clé privée SSH.
Pour des raisons de sécurité, je pense qu'une phrase secrète pour accéder à la clé privée SSH est indispensable. Existe-t-il un moyen qui permet au terminal de demander la phrase exactement une seule fois au démarrage, puis de la mémoriser et d'utiliser automatiquement ma clé privée dans les sessions SSH ultérieures?
Il existe un script appelé keychain
qui fonctionne très bien sur Gentoo Linux. Mais je ne l'ai jamais compris sur Mac OS X Lion. De plus, il y a tellement de termes intimidants, comme ssh-agent
, ssh-add
. Après avoir lu divers documents sur ces boîtes à outils SSH et fait des expériences frustrées, je suis devenu plus confus.
Par conséquent, je suis venu à StackExchange, à la recherche de conseils sur les questions suivantes.
- Quels sont
ssh-agent
,ssh-add
,keychain
,Keychain Access.app
et comment ils interagissent les uns avec les autres? - Comment puis-je saisir la phrase secrète de ma clé privée SSH une fois à la connexion et l'utiliser librement lors de la création de session SSH ultérieure?
- Euh ... Qu'est-ce qui ne va pas
Keychain Access.app
? Il ne stocke pas la phrase SSH comme auparavant.
Je liste ce que j'ai fait ici. J'espère qu'il y a des indices sur les étapes que j'ai manquées.
Étape 1. Créez une paire de clés SSH sur mon Mac.
$ ssh-keygen -t rsa -C "me@email.com"
# Set a passphrase for accessing the private key.
Étape 2. Copiez ma clé publique SSH sur l'hôte distant. Pour prendre un exemple, je copie la clé sur localhost, Mac.
$ ssh-copy-id USER@localhost
# Enter the login password for USER at localhost, not my SSH passphrase
Étape 3. Ensuite, essayez de vous connecter à l'hôte distant (localhost ici), via l'authentification par paire de clés SSH.
$ ssh USER@locahost
Enter passphrase for key '/Users/YOUR_ACCOUNT/.ssh/id_rsa':
# Enter my SSH passphrase, not the login password.
Étape 4. Déconnectez-vous de l'hôte distant et essayez de vous y connecter à nouveau. Merde, le terminal demande à nouveau la phrase SSH.
Une question fréquemment posée est: "Est-ce que ssh-agent fonctionne bien sur votre Mac?". Franchement, je n'ai aucune idée de ce qui se passe. Voici quelques résultats en cours d'exécution.
$ echo $SSH_AUTH_SOCK
/tmp/launch-M48niA/Listeners
$ echo $SSH_AUTH_PID
(EMPTY)
$ ssh-add -l
Could not open a connection to your authentication agent.
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-Z54zXukQiP/agent.26769; export SSH_AUTH_SOCK;
SSH_AGENT_PID=26770; export SSH_AGENT_PID;
echo Agent pid 26770;
$ ssh-add -l
Could not open a connection to your authentication agent.
$ echo $SSH_AUTH_SOCK
/tmp/launch-M48niA/Listeners
$ echo $SSH_AUTH_PID
(STILL EMPTY)
$ ssh-agent # Oh no, anther ssh-agent with different PID
SSH_AUTH_SOCK=/tmp/ssh-cx0B4FUX8B/agent.26898; export SSH_AUTH_SOCK;
SSH_AGENT_PID=26899; export SSH_AGENT_PID;
echo Agent pid 26899;
$ ps -e | grep -i ssh
26769 ?? 0:00.03 ssh-agent
26899 ?? 0:00.02 ssh-agent
Toute rétroaction est la bienvenue. Merci!