Recuperar la frase de contraseña de la clave privada SSH del llavero

4

Después de realizar una actualización de macOS, ssh pidió mi frase de contraseña ssh. He olvidado por completo la frase de contraseña desde que Keychain la ha estado administrando.

Esto answer muestra cómo configurar el llavero para reconectar y eliminar mi necesidad de ingresar la frase de contraseña cuando me conecto a un host. Después de seguir esos pasos, puedo ssh correctamente sin saber la contraseña de la clave privada, lo que sugiere que la frase de contraseña se almacena en el llavero.

Sin embargo, no puedo encontrar la frase de contraseña ssh en el llavero. ¿Hay alguna forma de recuperar la frase de contraseña de la clave ssh del llavero?

Esto question / answer dice que keychain mantiene las frases de contraseña como elementos de keychain normales, pero solo puedo encontrar un elemento después de buscar ssh y ese es un elemento más antiguo para mi clave id_rsa original que ya no se usa.

    
pregunta Josh 16.12.2016 - 18:03

3 respuestas

3

Abra Keychain Access y active la opción Ver > Mostrar elementos invisibles.

Que debes buscar id_rsa o 'ssh'.

    
respondido por el Approach 13.03.2018 - 09:15
6

Respuesta corta: Sí, elija "Mostrar elementos invisibles" en Acceso a llavero

(Originalmente, esta respuesta decía incorrectamente: "Actualmente no parece haber una forma de recuperar la frase de contraseña". El resto de la respuesta compara cómo las frases de contraseña de la clave SSH se almacenan en llaveros en versiones anteriores y más recientes de macOS se guarda aquí como referencia.)

En Mac OS X 10.11 y anteriores, las frases de contraseña de SSH se almacenaron con ssh y ssh-add en el llavero de inicio de sesión del usuario, utilizando las siguientes propiedades (pseudocódigo adaptado de Apple OpenSSH-195.40.1 ):

{
    kSecClass: kSecClassGenericPassword,
    kSecAttrAccount: pathToPrivateKey,
    kSecAttrLabel: "SSH: " + pathToPrivateKey,
    kSecAttrService: "SSH"
}

A partir de macOS 10.12, la frase de contraseña se consulta y almacena con propiedades que la obligan a almacenarse en el llavero "sincronizable" (los "Elementos locales" respaldados por la base de datos, también llamados "Llavero de iCloud" si está habilitado), con acceso controlado por un " Grupo de acceso "; ssh ignorará los elementos antiguos en su llavero de inicio de sesión. De Apple OpenSSH 209 :

{
    kSecClass: kSecClassGenericPassword,
    kSecAttrAccount: pathToPrivateKey,
    kSecAttrLabel: "SSH: " + pathToPrivateKey,
    kSecAttrService: "OpenSSH",
    kSecAttrNoLegacy: TRUE,
    kSecAttrAccessGroup: "com.apple.ssh.passphrases"
}

Apple no ha habilitado la línea de comando security la herramienta para acceder al contenido del llavero sincronizable, y de forma predeterminada (a menos que seleccione "Mostrar elementos invisibles"), el acceso al llavero tampoco muestra el contenido completo del mismo, aunque el elemento del llavero ssh no esté explícitamente marcado como invisible .

Si quisiera intentar obtener la contraseña sin usar Keychain Access, no creo que sea sencillo o incluso posible escribir un programa que recupere la contraseña del llavero, ya que el acceso a él está controlado por Apple firma de código.

Puede ver algunos detalles limitados sobre las frases de contraseña almacenadas en su llavero sincronizable usando el comando sqlite3 , pero la mayoría de los campos interesantes como las etiquetas de los elementos están cifrados.

$ sqlite3 Library/Keychains/*/keychain-2.db "select rowid, datetime(mdat+978307200, 'unixepoch', 'localtime'), agrp from genp where agrp = 'com.apple.ssh.passphrases' order by mdat asc"  
45|2017-01-07 13:53:13|com.apple.ssh.passphrases
46|2017-01-08 23:59:25|com.apple.ssh.passphrases
    
respondido por el Miles 10.01.2017 - 06:44
3

MacOS 10.13.3:

Abra Keychain Access y active la opción Ver > Mostrar elementos invisibles.

Luego debes buscar id_rsa o 'ssh'.

Haz clic para revelar passhrase. Es posible que deba proporcionar su contraseña de inicio de sesión de Mac en ese momento.

    
respondido por el Joe Murray 13.03.2018 - 16:21

Lea otras preguntas en las etiquetas