macOS 10.12 Sierra no olvidará mi frase de contraseña del archivo de claves ssh

id-rsaDespués de crear un nuevo archivo de clave cifrada ssh-keygeny usarlo por primera vez, no puedo hacer que macOS olvide la frase de contraseña. Esto es similar a cómo hacer que OS X no recuerde la pregunta de la frase de contraseña de la clave ssh, pero peor.

Intenté reiniciar, eliminar el ssh-agent, bloquear todos mis llaveros, pero todavía parece estar almacenado en alguna parte. Sin embargo, no puedo encontrarlo en ningún llavero. Esto parece ser muy inseguro. Las respuestas a la contraseña de clave privada SSH nunca eliminada con Keychain/ssh-agent tampoco ayudan.

De hecho, el cuadro de diálogo que solía aparecer preguntándole si deseaba almacenar la frase de contraseña o no parece que ya no existe.

¿Comprobaste si realmente está encriptado?
Sí. Estoy bastante seguro de que ssh solicita la frase de contraseña la primera vez que la uso. ¿Puede alguien realmente reproducir esto?
Bueno, también funciona de esa manera con mi configuración, es la forma en que se configuró ssh/ssh-agent.
Eso es cierto si hace clic en la casilla de verificación para decirle a macOS que almacene la frase de contraseña en el llavero. Sin embargo, si no hace clic en esa casilla de verificación, macOS siempre debe solicitar la frase de contraseña. Pero incluso si hizo clic en él, siempre pudo eliminarlo nuevamente en la utilidad de llavero. Desde Sierra, el cuadro de diálogo ya no aparece y no hay entrada en la utilidad de llavero.
Este es el cuadro de diálogo del que estoy hablando, que parece que ya no existe: dribin.org/dave/resources/pictures/ssh_leopard_dialog.png
De acuerdo con esta respuesta en un rdar relacionado , Apple cambió la forma en que se manejan las claves SSH. Incluso tiene que agregar todas sus claves SSH /usr/bin/ssh-add -Aal ssh-agent una vez después de cada reinicio o agregar esto a sus archivos de inicio de shell.
Misma pregunta en Apple Communities: origin-discussions-us.apple.com/message/30749199
Por cierto, presenté un informe de error a Apple sobre esto el 20 de septiembre de 2016: openradar.appspot.com/28394826

Respuestas (3)

Para deshabilitar el almacenamiento de la frase de contraseña en el llavero, debe agregar las siguientes líneas al archivo ~/.ssh/config :

Host *
UseKeyChain no

Si ya tiene una frase de contraseña almacenada en el llavero, puede eliminarla usando los comandos:

cd ~/Library/Keychains/<UUID>/
sqlite3 keychain-2.db 'delete from genp where agrp="com.apple.ssh.passphrases"'

Si desea tener un comportamiento como en OS X El Capitan o anterior (es decir, la frase de contraseña se almacena hasta que cierre la sesión o reinicie), simplemente agregue a ~/.ssh/config:

AddKeysToAgent yes

No necesita iniciar ssh-agent.

¡Esta respuesta resuelve el problema de forma permanente! Así que marqué esto como la respuesta correcta. ¡Gracias!
edición sugerida: cambie Library/Keychains/<UUID>/a ~/Library/Keychains/<UUID>/para mayor claridad :)
edición sugerida aceptada :)

Gracias a Clive, tengo una mejor comprensión de esta nueva 'característica'. Cuando escribe su frase de contraseña, Sierra la agrega a su llavero pero no al ssh-agent. Si su identidad no está en ssh-agent, no hay forma de administrarla con ssh-add. Para administrar (es decir, eliminar) su identidad del llavero, debe agregar su identidad ssh-agentusando ssh-add. Una vez que haya agregado su identidad ssh-agent, puede usarla ssh-add -K -dpara eliminarla de ambos ssh-agenty del llavero. Si desea que su identidad se agregue a ssh-agent cada vez que use ssh, agregue:

AddKeysToAgent yes

.ssh/configa tu Esto asegurará que ssh-agentsiempre tenga su identidad.

Solo un seguimiento. Si agrega 'UseKeyChain no' a su .ssh/config, evitará que Keychain agregue su frase de contraseña. Desea mantener 'AddKeysToAgent yes' en ssh-agent mantendrá su frase de contraseña hasta que reinicie o use ssh-add -d.
Tenga en cuenta que esto requiere el uso de OpenSSH enviado por Apple. Este parche no está incluido en home-brew a partir dehomebrew/dupes/openssh: stable 7.3p1
ssh-add -K -d

Esto puede eliminar frases de contraseña previamente almacenadas en el llavero. Desde macOS 10.12 Sierra, para evitar volver a almacenar la frase de contraseña en el llavero, asegúrese de hacerlo ssh-addprimero.

Sí. Esto solía funcionar en versiones anteriores de macOS Sierra. Pero ya no funciona. macOS Sierra todavía recuerda la frase de contraseña.
ESTÁ BIEN. Más investigación. Lo olvida una vez, pero volverá directamente al llavero después de usarlo en cualquier lugar (ssh, scp, git, etc.). Un amable extraño me envió un correo electrónico directamente y descubrió que la frase de contraseña parece estar almacenada en ~/Library/Keychains/<ALGUNA-UUID>/keychain-2.db. Pero incluso al bloquear mi llavero de inicio de sesión (y todos los demás llaveros), os x no solicitará la contraseña de mi llavero al acceder a la frase de contraseña. Eso realmente no parece correcto.
De hecho, parece que en Sierra la frase de contraseña se guarda en esa ubicación del llavero y no en el llavero de inicio de sesión habitual.