Respuesta corta: Sí, seleccione "Mostrar elementos invisibles" en el acceso al 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 que compara cómo se almacenan las frases de paso de las claves SSH en los llaveros de las versiones antiguas y nuevas de macOS se mantiene aquí como referencia).
En Mac OS X 10.11 y anteriores, las frases de contraseña de SSH se almacenaban mediante 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 obligan a almacenarla en el llavero "sincronizable" (la base de datos "Elementos locales", también llamada "Llavero de iCloud" si está activada), con acceso controlado por un "Grupo de Acceso" ; ssh
ignorará los elementos antiguos de su llavero de inicio de sesión. Desde Apple OpenSSH 209 :
{
kSecClass: kSecClassGenericPassword,
kSecAttrAccount: pathToPrivateKey,
kSecAttrLabel: "SSH: " + pathToPrivateKey,
kSecAttrService: "OpenSSH",
kSecAttrNoLegacy: TRUE,
kSecAttrAccessGroup: "com.apple.ssh.passphrases"
}
Apple no ha habilitado el security
herramienta de línea de comandos para acceder al contenido del llavero sincronizable, y por defecto (a no ser que se seleccione "Mostrar elementos invisibles") Keychain Access tampoco muestra el contenido completo del mismo, aunque el elemento del llavero ssh no esté marcado explícitamente como invisible .
Si quieres intentar obtener la contraseña sin usar el acceso al llavero, no creo que sea sencillo o incluso posible escribir un programa que obtenga la frase de contraseña del llavero, ya que el acceso al mismo está controlado por la firma de código de Apple.
Puedes ver algunos detalles limitados sobre las frases de contraseña almacenadas en tu llavero sincronizable utilizando la función sqlite3
pero la mayoría de los campos interesantes, como las etiquetas de los artículos, están codificados.
$ 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