Recuperar contraseña de key privada SSH de llavero

Después de realizar una actualización de macOS, ssh solicitó mi frase de contraseña de ssh. Me olvidé por completo de la contraseña ya que Keychain la ha estado administrando.

Esta respuesta muestra cómo configurar keychain para volver a conectar y eliminar la necesidad de ingresar la frase de contraseña cuando se conecta a un host. Después de seguir esos pasos, puedo hacer ssh con éxito sin conocer la contraseña de key privada, lo que sugiere que la frase de contraseña se almacena en el llavero.

  • Desactivar de forma selectiva la synchronization de iCloud keychain para passwords WiFi
  • Tengo varios cientos de certificates caducados que comienzan con com.apple.idms.appleid.prd. ¿Qué son y son seguros para eliminar?
  • Ver el escritorio de * muy remota * Caja de Ubuntu desde mi MacBook Pro
  • Estableciendo session ssh usando Back To My Mac
  • ssh_exchange_identification: connection cerrada
  • Inicio de session remoto con el gráfico "ssh" / rdp
  • Sin embargo, no puedo encontrar la contraseña de ssh en el llavero. ¿Hay alguna manera de recuperar la frase key de ssh de keychain?

    Esta pregunta / respuesta dice que el llavero guarda las frases key como elementos regulares del llavero, pero solo puedo encontrar un artículo después de search ssh y ese es un artículo más antiguo para mi key id_rsa original que ya no se usa.

  • Autenticación basada en keys SSH mediante tarjeta inteligente
  • SSH al dispositivo a través de USB
  • ssh tunnel en osx - connection rechazada
  • ¿Por qué dsenableroot NO funcionaría en un 10.7.5 OSX Server?
  • Habilitar el inicio de session ssh-key-only en mi Mac para 1 usuario
  • Safari Security quiere usar confidencial
  • One Solution collect form web for “Recuperar contraseña de key privada SSH de llavero”

    Respuesta corta: actualmente no parece haber una forma de recuperar la frase de contraseña.

    En Mac OS X 10.11 y versiones anteriores, ssh y ssh-add almacenaban frases de contraseña SSH en el llavero de inicio de session del usuario, utilizando las siguientes properties (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 properties que obligan a almacenarla en el llavero "syncable" (los "Elementos locales" respaldados por la database, también llamado "iCloud Keychain", si está habilitado), con acceso controlado por un "Grupo de acceso" ; ssh ignorará los elementos antiguos en su llavero de inicio de session. 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 herramienta de command-line de security para acceder al contenido del llavero syncable y, por alguna razón, Keychain Access tampoco muestra el contenido completo, aunque el elemento ssh keychain no está marcado explícitamente como invisible . Tampoco creo que sea fácil o posible escribir un progtwig que obtenga la contraseña del llavero, ya que el acceso está controlado por la firma del código de Apple.

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

     $ 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 
    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).