Entiendo que desde Mac OS X Leopard, el llavero ha admitido el almacenamiento de claves SSH. ¿Podría alguien explicar cómo se supone que funciona esta función?
Tengo algunas claves RSA que he generado almacenadas en mi directorio ~ / .ssh para acceder a varios servidores. No tengo frases de contraseña establecidas en esas teclas. Actualmente para iniciar sesión en esos servidores, uso los siguientes comandos en la Terminal:
eval `ssh-agent` ssh-add ~ / .ssh / some_key_rsa ssh usuario @ servidor
(He escrito algunas funciones de Bash para facilitar esto).
¿Hay una mejor manera de hacer esto usando el llavero?
ssh-add
para agregar mis identidades RSA al agente ssh predeterminado que se inició al iniciar sesión?$HOME/.ssh/authorized_keys
en ese servidor. El ssh-agent + keychain de Mac OS solo se usa para almacenar la frase de contraseña para sus claves ssh locales; no está destinado a enviar contraseñas remotas a través de conexiones ssh existentes.ssh -v
para diagnosticar lo que ssh está haciendo. también se usasshd -p 8900 -v
en el lado del servidor yssh -v remote:8900
para diagnosticar qué está haciendo sshd.A partir del lanzamiento de Leopard de OS X, ssh-agent está más estrechamente integrado con Keychain. Es posible almacenar las frases de contraseña de todas sus claves SSH de forma segura en Keychain, desde el cual ssh-agent las leerá en el inicio. La conclusión es que es simple asegurar sus claves con frases de contraseña, ¡pero nunca tiene que escribir la frase de contraseña para usarlas! Aquí es cómo:
Agregue la frase de paso a cada clave ssh al llavero: (la opción -k solo carga claves privadas simples, omite certificados)
(nota que es una K mayúscula)
Cada vez que reinicie su Mac, todas las claves SSH en su llavero se cargarán automáticamente. Debería poder ver las claves en la aplicación Keychain Access, así como desde la línea de comandos a través de:
fuente
ssh-add -l
no enumera ninguna tecla cuando se conecta de forma remota (donde $ DISPLAY no está configurado). Aquí se deben emplear trucos especiales para usar el llavero (por ejemplo, en superuser.com/questions/141044/… )/usr/bin/ssh-add
.ssh-add -l
devuelve "El agente no tiene identidades". (ps aux
incluye/usr/bin/ssh-agent -l
)A partir de macOS Sierra , ssh-agent ya no carga automáticamente las claves ssh cargadas previamente cuando inicia sesión en su cuenta. Esto es intencional por parte de Apple, querían realinearse con la implementación principal de OpenSSH . [1]
Como se explica aquí , este es el método recomendado desde macOS 10.12.2 :
Agregue las siguientes líneas a su
~/.ssh/config
archivo:Cualquier clave que agregue al agente ssh utilizando el
ssh-add /path/to/your/private/key/id_rsa
comando se agregará automáticamente al llavero, y debe cargarse automáticamente al reiniciar.Lo siguiente está en desuso (guardado como referencia).
Para volver al comportamiento anterior, debe ejecutar el
ssh-add -A
comando (que carga automáticamente todas las claves ssh que tienen frases de contraseña en su llavero) cuando inicia sesión. Para ello, siga estos pasos:Primero, agregue todas las claves que desea cargar automáticamente al agente ssh usando el
ssh-add -K /absolute/path/to/your/private/key/id_rsa
comando. El-K
argumento asegura que la frase clave se agregue al llavero de macOS . Asegúrese de utilizar la ruta absoluta a la clave. El uso de una ruta relativa hará que la secuencia de comandos iniciada automáticamente no encuentre su clave.Asegúrese de que todas sus claves se muestren como agregadas cuando escriba
ssh-add -A
.Crear un archivo llamado
com.yourusername.ssh-add.plist
en~/Library/LaunchAgents/
el contenido de abajo. Los archivos Plist como este son utilizados porlaunchd
ejecutar scripts cuando inicia sesión. [2] [3]Dile
launchd
a cargar el archivo plist que acaba de crear mediante la ejecución:launchctl load ~/Library/LaunchAgents/com.yourusername.ssh-add.plist
.Y deberías estar listo.
fuente
Hay una manera más simple que la respuesta de Ricardo para mantener su contraseña entre sesiones / reinicios de su Mac con 10.12 Sierra.
ssh-add -K ~/.ssh/id_rsa
Nota: cambie la ruta a donde se encuentra su clave id_rsa.
ssh-add -A
Cree (o edite si existe) el siguiente
~/.ssh/config
archivo:¡Ahora la contraseña se recuerda entre reinicios!
Apple cambió a propósito el comportamiento de ssh-agent en macOS 10.12 Sierra para que ya no cargue automáticamente las claves SSH anteriores, como se señaló en este OpenRadar , discusión en Twitter y nota técnica de Apple . La solución anterior imitará el comportamiento anterior de El Capitán y recordará su contraseña.
fuente
ssh-add -K
para agregar mi clave SSH al Apple Keychain, ¿cuál es el nombre y el tipo de entrada que se muestra en Keychain Access.app?Nota: para macOS Sierra, consulte la respuesta más reciente de ChrisJF .
La [respuesta de Jeff McCarrell] [2] es correcta, excepto que el comando para agregar la frase de paso contiene un guión en lugar de un guión, es decir, en
–K
lugar de-K
provocar un mensaje como efecto–K: No such file or directory
. Debería leer:fuente
ssh-add -K
illegal option -- K
. Minúscula k aparece como una opción.-K
es decir, dash-capital-K, todavía es válidoSospecho que no estás usando el
ssh
comando predeterminado . ¿Te hasssh
instalado a través de puertos? Intentawhich ssh
ver quéssh
comando estás usando.Por lo general, debe mostrar un cuadro de diálogo pidiéndole su contraseña, si aún no está almacenada en su llavero.
fuente
Tuve un problema similar al intentar iniciar sesión con un certificado ssh del cliente. En este caso específico fue para acceder a un repositorio git. Esta fue la situación:
~/.ssh/
~/Library/Keychains/login.keychain
->
remoto mac->
git / ssh de macCuando me conecté a una Mac remota usando un escritorio remoto, no tuve ningún problema. Sin embargo, cuando me conecté con SSH al Mac remoto, siempre me pidieron la frase de contraseña ssh. Los siguientes pasos lo resolvieron por mí.
security unlock-keychain
La frase de contraseña se almacena en el llavero de inicio de sesión. Esto lo desbloquea y permite que ssh-agent acceda a él.eval `ssh-agent -s`
Inicia ssh-agent para uso de shell. Obtendrá la frase de contraseña del llavero y la usará para desbloquear la clave ssh privada.eval `ssh-agent -k`
Mata al agente ssh en ejecución.security lock-keychain
Bloquee el llavero nuevamente.fuente
eval \$(ssh-agent)
por Re: inicio de sesión remoto y llavero . Cuando no está dentro de un aliaseval $(ssh-agent)
funciona ( sin la barra invertida $ ).Ver también:
... agregando esta nota a medida que se solicitaban más detalles: el comando "seguridad" es capaz de importar claves (y otras cosas) directamente en Keychains. Lo bueno es que, a diferencia de ssh-add, puede especificar el llavero. Esto permite importar directamente en el sistema Llavero ("seguridad de hombre" para aprender cómo)
fuente
La solución destinada mejor y Apple (ya macOS 10.12.2) se describe aquí
fuente
>>
está en riesgo si ingresa el comando varias veces. Mejor hacer una edición manual del archivo, como se describe por ChrisJF respuesta .