¿Cómo puedo agregar permanentemente mi clave privada SSH a Keychain para que esté automáticamente disponible para ssh?

318

Parece que ssh-add -K ~/.ssh/id_rsa cargará su clave, pero le pedirá la contraseña cada vez que reinicie.

Estoy buscando una solución que no requiera que vuelva a ingresar la contraseña clave entre los inicios de sesión.

    
pregunta sorin 13.04.2012 - 15:13

6 respuestas

536

En OSX, el cliente ssh-add tiene un argumento especial para guardar la frase de contraseña de la clave privada en el llavero OSX, lo que significa que su inicio de sesión normal lo desbloqueará para usarlo con ssh. En OSX Sierra y versiones posteriores, también debe configurar SSH para usar siempre el llavero (consulte el Paso 2 a continuación).

Alternativamente, puedes usar una clave sin una frase de contraseña, pero si prefieres la seguridad que es ciertamente aceptable con este flujo de trabajo.

Paso 1: guardar la clave en el llavero

Solo haz esto una vez:

ssh-add -K ~/.ssh/[your-private-key]

Ingrese su contraseña clave, y no se le volverá a preguntar.

(Si está en una versión pre-Sierra de OSX, ya ha terminado, no se requiere el Paso 2).

Paso 2: configura SSH para usar siempre el llavero

Parece que OSX Sierra eliminó el conveniente comportamiento de persistir las claves entre los inicios de sesión, y la actualización a ssh ya no usa el llavero de forma predeterminada. Debido a esto, se le pedirá que ingrese la contraseña para una clave después de la actualización, y nuevamente después de cada reinicio.

La solución es bastante simple y se describe en este comentario del hilo de github . Así es como lo configuras:

  1. Asegúrese de haber completado el Paso 1 anterior para almacenar la clave en el llavero.

  2. Si aún no lo has hecho, crea un archivo ~/.ssh/config . En otras palabras, en el directorio .ssh en su directorio de inicio, cree un archivo llamado config .

  3. En ese archivo .ssh/config , agregue las siguientes líneas:

    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
    

    Cambie ~/.ssh/id_rsa al nombre de archivo real de su clave privada. Si tiene otras claves privadas en su directorio ~.ssh , también agregue una línea IdentityFile para cada una de ellas. Por ejemplo, tengo una línea adicional que lee IdentityFile ~/.ssh/id_ed25519 para una segunda clave privada.

    El UseKeychain yes es la parte clave, que le dice a SSH que busque en su llavero OSX la frase de contraseña clave.

  4. Eso es todo! La próxima vez que cargue una conexión ssh, probará las claves privadas que ha especificado y buscará su contraseña en el llavero OSX. No es necesario escribir una frase de contraseña.

respondido por el trisweb 26.08.2016 - 03:06
11

Se le pedirá la contraseña cada vez que lo haga porque su llavero de "inicio de sesión" se está bloqueando después de inactividad y / o inactividad o, en su caso, un reinicio. Hay dos formas de resolver esto por ti.

  1. Cambie la configuración de su llavero de "inicio de sesión". Suponiendo que su clave ssh esté almacenada en el llavero de "inicio de sesión".

    • Acceso a llavero abierto
    • Resalte el llavero de "inicio de sesión"
    • Haga clic con el botón derecho o presione la tecla "Iniciar sesión"
    • Desactive la casilla de verificación "Bloquear después de X minutos de inactividad" y "Bloquear al dormir".
  2. Genere otra clave SSH sin usar una frase de contraseña.

    • Terminal abierta.
    • Ingrese el comando: ssh-keygen -t rsa -b 4096 -C <comment> -f <.ssh/id_rsa>
    • -t es para el tipo, -b es el tamaño de la clave, -C es el comentario, -f archivo de salida (primero debe crear los directorios)
    • No establezca una frase de contraseña.
    • Importe la clave SSH en el llavero de "inicio de sesión" con ssh-add -K <path to ssh key>

Ya no se te pedirá una contraseña de llavero.

    
respondido por el Matthew Sanabria 24.07.2015 - 05:46
10

Tuve un problema similar, ya que se me pedía CADA VEZ para mi frase de contraseña de clave de pub.

Por sugerencia del usuario "trisweb" anterior, activé estas opciones para ~ / .ssh / config:

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

PERO aún se me pedía cada vez que quería usar ssh.

Finalmente, activé "ssh -v" y encontré esta línea de depuración:

  

debug1: key_load_private: frase de contraseña incorrecta proporcionada para descifrar la clave privada

Luego abrí mi llavero en "Keychain Access.app", encontré la clave llamada "SSH: /Users/username/.ssh/id_rsa" y la abrí.

Hice clic en "Mostrar contraseña" para revelar la contraseña y, de hecho, encontré que la frase de contraseña en el llavero era una frase de contraseña antigua.

Actualicé la contraseña en Acceso a Llaves, y ahora funciona sin contraseña.

También podría haber actualizado la frase de contraseña con esta frase:

  

ssh-keygen -p -f ~ / .ssh / id_rsa

    
respondido por el user2688272 19.12.2017 - 18:24
5

Además, en macOS Sierra y HighSierra (no sé acerca de las versiones anteriores), ejecutar ssh-add -A hará que el agente cargue todas las claves cuyas frases de contraseña están almacenadas en el llavero ... Muy útil

    
respondido por el JJarava 05.04.2018 - 10:40
3

Para todos donde no funcionó lo anterior, mi problema parece haber sido porque estaba duplicando el UseKeychain yes & AddKeysToAgent yes en todos los perfiles / accesos directos de claves ssh. Actualicé mi archivo ~/.ssh/config para declarar esto solo una vez y ahora todos se cargan al iniciar sesión sin pedir contraseñas al inicio, por ejemplo:

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/foo
  IdentityFile ~/.ssh/bar

Host foo
  HostName foo.com
  User fooUser
  IdentityFile ~/.ssh/foo

Host bar
  HostName bar.com
  User barUser
  IdentityFile ~/.ssh/bar
    
respondido por el Avolition 13.08.2018 - 04:07
-4

Agregar la clave pública en:

.ssh/known_hosts

La clave pública generalmente está en:

/home/user/.ssh/id_rsa.pub

Espero que ayude

    
respondido por el lluisi 20.04.2012 - 13:04

Lea otras preguntas en las etiquetas