Uso Mac OS X Lion e inicio de sesión en hosts remotos a través de SSH todos los días. A pesar de que uso el par de claves SSH para la autenticación remota y no necesito motorizar la frase de inicio de sesión de cada host, sigue siendo muy molesto que el terminal solicite la frase de contraseña para acceder a mi clave privada SSH.
Por razones de seguridad, creo que es necesaria una frase de contraseña para acceder a la clave privada SSH. ¿Hay alguna forma de hacer que el terminal solicite la frase exactamente solo una vez al inicio, luego la memorice y use automáticamente mi clave privada en sesiones SSH posteriores?
Hay un script llamado keychain
que funciona bien en Gentoo Linux. Pero nunca lo descubro en Mac OS X Lion. Lo que es más, hay tantos términos de intimidación, como ssh-agent
, ssh-add
. Después de leer varios materiales sobre esos kits de herramientas SSH y hacer algunos experimentos frustrados, me confundí más.
Por lo tanto, vine a StackExchange, en busca de algunos consejos sobre las siguientes preguntas.
- ¿Cuáles son
ssh-agent
,ssh-add
,keychain
,Keychain Access.app
y cómo interactúan entre sí? - ¿Cómo puedo ingresar la frase de contraseña para mi clave privada SSH una vez al iniciar sesión y usarla libremente en la creación posterior de la sesión SSH?
- Errr ... ¿Qué tiene de malo
Keychain Access.app
? No almacena la frase SSH como lo hizo antes.
Enumero lo que he hecho aquí. Esperemos que haya pistas sobre los pasos que me perdí.
Paso 1. Crear un par de claves SSH en mi Mac.
$ ssh-keygen -t rsa -C "me@email.com"
# Set a passphrase for accessing the private key.
Paso 2. Copie mi clave pública SSH al host remoto. Para tomar un ejemplo, copio la clave a localhost, Mac.
$ ssh-copy-id USER@localhost
# Enter the login password for USER at localhost, not my SSH passphrase
Paso 3. Luego intenta conectarte al host remoto (localhost aquí), a través de la autenticación de par de claves SSH.
$ ssh USER@locahost
Enter passphrase for key '/Users/YOUR_ACCOUNT/.ssh/id_rsa':
# Enter my SSH passphrase, not the login password.
Paso 4. Cierre sesión en el host remoto e intente conectarse nuevamente. Maldita sea, la terminal vuelve a pedir la frase SSH.
Una pregunta frecuente es que "¿ssh-agent funciona bien en tu Mac?". Hablando francamente, no tengo idea de lo que está pasando con estas cosas. Aquí se muestran algunos resultados corrientes.
$ 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
Cualquier comentario es bienvenido. ¡Gracias!