¿Puedes decir un poco más sobre cuándo aparece la solicitud de contraseña? Pregunto porque tengo una clave ssh para un servidor remoto, lo cual le aseguro que no es lo mismo que mi contraseña de inicio de sesión de Mac ni nada, y no he tenido que ingresar la contraseña de la clave ssh durante años . Puedo abrir una terminal, escribir "ssh <server>", y estoy allí. Creo que configuré esta clave por primera vez en OSX 10.5. id_dsa, pero no creo que eso deba importar.
Michael H.
Mi id_rsaclave tiene una contraseña.
sorin
También tengo el problema de que resolví esto hace tanto tiempo que no puedo recordar exactamente lo que hice. Pero creo que la idea es no correr ssh-add, sino solo correr sshdirectamente. Debería aparecer una ventana emergente que será la frase de paso para la clave, y con una casilla de verificación que le permita almacenarla en su llavero.
Harald Hanche-Olsen
1
@Sorin, ¡también el mío! Tuve que ingresarlo una vez, hace mucho tiempo, y la Mac me lo ha guardado desde entonces. Esperemos que el consejo de Harald ayude.
Michael H.
¿Se refiere a la contraseña del llavero (es decir, su contraseña de inicio de sesión) o la contraseña de la clave? Si es lo último, ¿tus frases de contraseña definitivamente están almacenadas en Keychain? Puede verificar esto abriendo Keychain Access y buscándolo en el llavero de inicio de sesión.
Mathew Hall
Respuestas:
688
En OSX, el ssh-addcliente nativo 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, puede usar una clave sin una frase de contraseña, pero si prefiere la seguridad, eso es ciertamente aceptable con este flujo de trabajo.
Paso 1 - Guarda la llave en el llavero
Solo haz esto una vez:
ssh-add -K ~/.ssh/[your-private-key]
Ingrese su frase clave y no se le volverá a pedir.
(Si está en una versión anterior de 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 comportamiento conveniente de persistir sus claves entre inicios de sesión, y la actualización a ssh ya no usa el llavero por defecto. Debido a esto, se le pedirá que ingrese la frase de contraseña para una clave después de la actualización, y nuevamente después de cada reinicio.
Asegúrese de haber completado el Paso 1 anterior para almacenar la clave en el llavero.
Si aún no lo ha hecho, cree un ~/.ssh/configarchivo. En otras palabras, en el .sshdirectorio de su directorio de inicio, cree un archivo llamado config.
En ese .ssh/configarchivo, agregue las siguientes líneas:
Cambie ~/.ssh/id_rsaal nombre de archivo real de su clave privada. Si tiene otras claves privadas en su ~.sshdirectorio, también agregue una IdentityFilelínea para cada una de ellas. Por ejemplo, tengo una línea adicional que se lee IdentityFile ~/.ssh/id_ed25519para una segunda clave privada.
Esta UseKeychain yeses la parte clave, que le dice a SSH que busque en su llavero OSX la frase clave.
¡Eso es! La próxima vez que cargue cualquier conexión ssh, probará las claves privadas que haya especificado y buscará su frase de contraseña en el llavero OSX. No se requiere escribir frase de contraseña.
Esto casi me funcionó. Mi llavero de "inicio de sesión" ya tenía el bloqueo automático desactivado, por lo que la respuesta de Matthew Sanabria no se aplicaba. El uso ssh-add -K ...agregó las claves al agente ssh sin solicitar una contraseña, pero solo para la sesión actual. Después de reiniciar, tuve que volver a emitir el comando.
Poulsbo
44
@Poulsbo y @Abram: vea mi actualización, Sierra cambió el comportamiento automático y ahora debe ejecutarlo ssh-add -Amanualmente para cargar su llavero guardado. Algunas posibles soluciones mencionadas anteriormente.
@sorin vea la respuesta actualizada y avíseme si tiene algún comentario. ¡Gracias!
trisweb
99
¡Funciona genial! En mi caso, necesitaba usar la Abandera además de la Kpara agregar mis llaves al llavero y registrar la frase de contraseña ( ssh-add -AK ~/.ssh/[your-private-key]). ¡Gracias!
Youssman
22
Tuve un problema similar, ya que me pedían CADA VEZ mi frase de contraseña de clave de pub.
Por sugerencia del usuario "trisweb" anterior, activé estas opciones a ~ / .ssh / config:
PERO todavía se le solicitó cada vez que quería usar ssh.
Eventualmente encendí "ssh -v" y encontré esta línea de depuración:
debug1: key_load_private: se ha proporcionado una frase de contraseña incorrecta 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 frase de contraseña en Keychain Access, y ahora funciona sin contraseña.
También podría haber actualizado la frase de contraseña con esta frase:
Se le solicita la contraseña cada vez porque su llavero de "inicio de sesión" se bloquea después de la inactividad y / o de dormir o, en su caso, de reiniciar. Hay dos formas de resolver esto por usted.
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 "iniciar sesión"
Haga clic derecho o haga clic en la opción "iniciar sesión" llavero
Desmarque las casillas de verificación "Bloquear después de X minutos de inactividad" y "Bloquear cuando duerme".
Genere otra clave SSH sin usar una frase de contraseña.
Tenga en cuenta que al invocar ssh-adddesde dentro de SSH, security unlock-keychaindebe llamarse primero. Además, no tuve que crear los directorios para el -fparámetro. Desafortunadamente, todavía tenía que llamar security unlocl-keychaina sesiones SSH para acceder al llavero de inicio de sesión, que solicita contraseña cada vez ...
Ohad Schneider
2
El punto es tener una frase de contraseña en la clave. Dudo que generar una nueva clave SSH sea útil para la pregunta.
Gris
7
Además, en macOS Sierra y HighSierra (no sé sobre versiones anteriores), la ejecución ssh-add -Ahará que el agente cargue todas las claves cuyas frases de contraseña se almacenan en Keychain ... Muy útil
En todos los lugares donde lo anterior no funcionó, mi problema parece haber sido porque estaba duplicando el UseKeychain yes& AddKeysToAgent yesen todos los perfiles / accesos directos de teclas ssh. Actualicé mi ~/.ssh/configarchivo para declararlos solo una vez y ahora todos se cargan al iniciar sesión sin solicitar 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
id_rsa
clave tiene una contraseña.ssh-add
, sino solo correrssh
directamente. Debería aparecer una ventana emergente que será la frase de paso para la clave, y con una casilla de verificación que le permita almacenarla en su llavero.Respuestas:
En OSX, el
ssh-add
cliente nativo 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, puede usar una clave sin una frase de contraseña, pero si prefiere la seguridad, eso es ciertamente aceptable con este flujo de trabajo.
Paso 1 - Guarda la llave en el llavero
Solo haz esto una vez:
Ingrese su frase clave y no se le volverá a pedir.
(Si está en una versión anterior de 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 comportamiento conveniente de persistir sus claves entre inicios de sesión, y la actualización a ssh ya no usa el llavero por defecto. Debido a esto, se le pedirá que ingrese la frase de 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 de hilo de github . Así es como lo configuras:
Asegúrese de haber completado el Paso 1 anterior para almacenar la clave en el llavero.
Si aún no lo ha hecho, cree un
~/.ssh/config
archivo. En otras palabras, en el.ssh
directorio de su directorio de inicio, cree un archivo llamadoconfig
.En ese
.ssh/config
archivo, agregue las siguientes líneas:Cambie
~/.ssh/id_rsa
al nombre de archivo real de su clave privada. Si tiene otras claves privadas en su~.ssh
directorio, también agregue unaIdentityFile
línea para cada una de ellas. Por ejemplo, tengo una línea adicional que se leeIdentityFile ~/.ssh/id_ed25519
para una segunda clave privada.Esta
UseKeychain yes
es la parte clave, que le dice a SSH que busque en su llavero OSX la frase clave.¡Eso es! La próxima vez que cargue cualquier conexión ssh, probará las claves privadas que haya especificado y buscará su frase de contraseña en el llavero OSX. No se requiere escribir frase de contraseña.
fuente
ssh-add -K ...
agregó las claves al agente ssh sin solicitar una contraseña, pero solo para la sesión actual. Después de reiniciar, tuve que volver a emitir el comando.ssh-add -A
manualmente para cargar su llavero guardado. Algunas posibles soluciones mencionadas anteriormente..ssh/config
archivo parece prometedora! Ver github.com/lionheart/openradar-mirror/issues/…A
bandera además de laK
para agregar mis llaves al llavero y registrar la frase de contraseña (ssh-add -AK ~/.ssh/[your-private-key]
). ¡Gracias!Tuve un problema similar, ya que me pedían CADA VEZ mi frase de contraseña de clave de pub.
Por sugerencia del usuario "trisweb" anterior, activé estas opciones a ~ / .ssh / config:
PERO todavía se le solicitó cada vez que quería usar ssh.
Eventualmente encendí "ssh -v" y encontré esta línea de depuración:
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 frase de contraseña en Keychain Access, y ahora funciona sin contraseña.
También podría haber actualizado la frase de contraseña con esta frase:
fuente
Se le solicita la contraseña cada vez porque su llavero de "inicio de sesión" se bloquea después de la inactividad y / o de dormir o, en su caso, de reiniciar. Hay dos formas de resolver esto por usted.
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".
Genere otra clave SSH sin usar una frase de contraseña.
ssh-keygen -t rsa -b 4096 -C <comment> -f <.ssh/id_rsa>
ssh-add -K <path to ssh key>
Ya no se le debe solicitar una contraseña de llavero.
fuente
ssh-add
desde dentro de SSH,security unlock-keychain
debe llamarse primero. Además, no tuve que crear los directorios para el-f
parámetro. Desafortunadamente, todavía tenía que llamarsecurity unlocl-keychain
a sesiones SSH para acceder al llavero de inicio de sesión, que solicita contraseña cada vez ...Además, en macOS Sierra y HighSierra (no sé sobre versiones anteriores), la ejecución
ssh-add -A
hará que el agente cargue todas las claves cuyas frases de contraseña se almacenan en Keychain ... Muy útilfuente
En todos los lugares donde lo anterior no funcionó, mi problema parece haber sido porque estaba duplicando el
UseKeychain yes
&AddKeysToAgent yes
en todos los perfiles / accesos directos de teclas ssh. Actualicé mi~/.ssh/config
archivo para declararlos solo una vez y ahora todos se cargan al iniciar sesión sin solicitar contraseñas al inicio, por ejemplo:fuente
Agregue la clave pública en:
La clave pública generalmente está activada:
Espero que ayude
fuente
authorized_keys