¿Dónde están mis claves SSH privadas / públicas en UNIX?

17

Estoy empezando a comprender cómo funcionan los sistemas de claves RSA y pública / privada, y me preguntaba dónde están almacenadas mis claves SSH privadas y públicas. Cuando voy a mi directorio de inicio y busco mi directorio .ssh (cd .ssh), solo veo el archivo "known_hosts", que creo que contiene las claves públicas de diferentes servidores SSH remotos que conozco.

¿Dónde puedo encontrar estas llaves? Ni siquiera recuerdo haberlos creado por cierto, pero como ya he establecido conexiones ssh antes, deben estar en algún lugar.

Estoy usando OpenSSH_5.2p1 con MAC OS 10.6.

¡Gracias!

Michael Eilers Smith
fuente

Respuestas:

15

~/.ssh/id_rsay ~/id_rsa.pubgeneralmente Pero no se deduce que ssh deba crear un par y guardarlos: ssh básicamente utiliza el protocolo SSL, que establece una clave de sesión utilizando el algoritmo de intercambio de claves Diffie / Hellman o alguna variante. Eso significa que el protocolo de enlace que configura la conexión genera una clave de sesión y la descarta cuando se completa la sesión.

Lea sobre el algoritmo, es bastante ingenioso: usando matemáticas bastante simples, establece una clave conocida para ambos extremos de la conexión sin enviar la clave a través de la conexión.

Charlie Martin
fuente
¿Significa eso que si nunca me pidieron generar claves SSH, ese RSA nunca se ha utilizado? En otras palabras, ¿se utilizó algún algoritmo asimétrico para compartir la clave de sesión, pero que las claves temporales públicas / privadas para la conexión no se almacenaron en mi computadora?
Eso es exactamente correcto. En realidad, el cifrado es simétrico: los algoritmos asimétricos no son adecuados para la transmisión. El Diffie-Hellman se usa para generar una clave de sesión para el cifrado simétrico. Si, en cambio, utiliza un par de claves pública / privada, se utilizan en algún otro protocolo de enlace para crear una clave de sesión para el algoritmo simétrico.
Charlie Martin
@mieli: No. Nunca fueron creados en primer lugar. publickeyes solo un posible método de autenticación de muchos; si simplemente inició sesión con passwordo keyboard-interactive, se envió la contraseña. (Nota: no confunda la clave de usuario, la clave de host y las claves de sesión).
user1686
@grawity estamos mayormente de acuerdo aquí, pero seamos un poco cuidadosos. El intercambio de claves de Diffie-Hellman está relacionado con RSA y otros algoritmos de cifrado asimétrico y es esencialmente asimétrico, ya que ambos lados del intercambio tienen su propia "mitad" del acuerdo final. Que hacer dos partes de la llave y la llave final y el proceso exacto para su construcción son desechados al final de la sesión. Sin embargo, no son las partes públicas y privadas de un par RSA.
Charlie Martin
4

Sus claves ssh personales públicas y privadas normalmente se almacenan en:

$HOME/.ssh/id_dsa     (private key)
$HOME/.ssh/id_dsa.pub (public key)

O podrían serlo id_rsay id_rsa.pubsi creó claves RSA en lugar de claves DSA (OpenSSH admite ambos formularios).

Pero el hecho de que haya establecido conexiones ssh antes no implica que tenga claves ssh. Si el sshcomando no puede encontrar su clave personal, le pedirá una contraseña para el sistema remoto. Esto es menos seguro que usar llaves.

Normalmente debe crear su clave privada ssh con una frase de contraseña. Si lo crea sin una frase de contraseña, alguien que obtenga una copia de su clave privada puede hacerse pasar por usted. ssh-agentle permite usar una clave con una frase de contraseña sin tener que volver a ingresarla cada vez que la use.

Keith Thompson
fuente
2

Si no creó un par de claves, probablemente no tenga uno.

El tráfico SSH2 se cifra con una clave de sesión simétrica establecida mediante algoritmos DH, ECDH o intercambio de claves GSSAPI. Ni la clave de host ni la clave de usuario se utilizan para cifrar datos; su único propósito es la autenticación .

Ahora recuerde que SSH admite varios métodos de autenticación: además publickey, casi todos los servidores aceptan lo simple passwordy / o keyboard-interactive, en el que no tiene lugar la generación o el uso de claves, la contraseña simplemente se envía al servidor remoto para su verificación.

En otras palabras, "dado que ya he establecido conexiones ssh antes, deben estar en algún lugar" es incorrecto: el par de claves del usuario no es necesario para establecer conexiones.


Si lo hizo crear un par de claves, es probable que sea en ~/.ssh/id_*- por ejemplo, id_rsapara el par de claves RSA por defecto, id_ecdsapara ECDSA, id_dsapara DSA. Aunque estos archivos contienen ambas partes privadas y públicas del par de claves, la parte pública normalmente se extrae automáticamente en una separada id_*.pubde archivos por conveniencia ( id_rsa.pubpara id_rsay así sucesivamente).

usuario1686
fuente