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