2010-06-04 16 views
9

ssh-add -l muestra que tengo 3 claves RSA agregadas a mi agente SSH. ssh-add -L muestra las claves públicas. ¿Cómo obtengo las claves privadas también, para poder guardarlas en un archivo? ¿O es por diseño que esto es imposible, es decir, se le puede pedir a ssh-agent que realice operaciones usando la clave privada, pero nunca devolverá la clave en sí? Si es así, ¿cómo puedo pedirle que cifre/descifre un número para mí?Cómo extraer claves privadas de un agente ssh?

Está bien que tenga que escribir el código para esto (el lenguaje de programación no importa), pero preferiría usar una herramienta existente o una biblioteca.

Respuesta

5

Acabo de encontrar una muy buena explicación sobre cómo funciona ssh-agent: http://www.unixwiz.net/techtips/ssh-agent-forwarding.html. Esto responde parcialmente algunas de mis preguntas.

  • Uno de los aspectos más inteligentes del agente es cómo se puede verificar la identidad de un usuario (o, más precisamente, la posesión de una clave privada) sin revelar que la clave privada a nadie.

  • Uno de los beneficios de seguridad del reenvío de agente es que la clave privada del usuario nunca aparece en los sistemas remotos o en el cable, ni siquiera en forma cifrada.

Por lo que he entendido la explicación allí, el protocolo entre el cliente SSH y el ssh-agent proviedes ninguna manera en SSH1 o SSH2 salir las claves privadas de un ssh-agent.

+2

Esa no es realmente una respuesta a la pregunta, es decir, si hay alguna forma de preguntar a ssh-agent por sus claves descifradas, por ejemplo, para alimentarlas a algún otro cliente SSH que no sepa cómo usar ssh-agent. –

+2

La respuesta a la pregunta: no, no es posible. Lo que es posible lis aparece en el documento vinculado, y este no es. – pts

+1

Todo lo contrario, todo es posible en un mundo virtual, solo depende del tiempo y el esfuerzo para lograr el objetivo. Por ejemplo, esta es la forma en que puede extraer/robar claves de ssh-agent: https://blog.netspi.com/stealing-unencrypted-ssh-agent-keys-from-memory/ – galaxy

-1

esto es más una pregunta sysadmin, pero solo busque en ~/.ssh/id_rsa o id_dsa para las claves privadas. Tuvieron que entrar en ssh-agent en primer lugar ...

+0

Conozco los archivos '~/.ssh/id *' y no me interesan. Deseo obtener acceso a las claves en la * memoria * de un ssh-agent. – pts

+1

Me preocupan las claves que se agregaron desde otros hosts (a través del reenvío de agentes), y no es conveniente volver a conectarse con estos hosts para leer los archivos. – pts

1

En mi caso borré accidentalmente la carpeta .ssh pero mis claves están cargadas. Pero como no puedo recuperarlos de ssh-add, tuve que usar el software de recuperación de archivos.

+1

Como alternativa al software de recuperación de disco, puede volcar la memoria de un proceso en ejecución de Linux (por ejemplo, * ssh-agent *) como root ('sudo cat/proc/$$/mem', pero agregar la búsqueda adecuada). Probablemente el software de recuperación de disco es más fácil de usar. – pts

Cuestiones relacionadas