entendiendo el paso "Ofrecer una clave pública RSA" durante la inicialización de la conexión SSH

15

Durante la inicialización de la conexión SSHv2, hay un siguiente mensaje de depuración:

debug1: Offering RSA public key: /home/user/.ssh/id_rsa

¿Estoy en lo cierto al decir que en realidad no se envía una clave pública al servidor? Además, /home/user/.ssh/id_rsa es mi clave privada. ¿Qué significa exactamente este mensaje Offering RSA public key ?

    
pregunta Martin 28.02.2017 - 15:56
fuente

2 respuestas

13

Cuando el cliente SSH muestra este mensaje, intenta autenticar al usuario en el servidor ( userauth_pubkey en sshconnect2.c ). El cliente debe demostrar que tiene la clave privada correspondiente a una clave pública que está autorizada en el servidor. El nombre del archivo que se muestra en el mensaje de depuración es el nombre del archivo de clave privada (por ejemplo, se pasa como un argumento a -i o como la directiva de configuración IdentityFile ).

En el punto donde se muestra este mensaje, el cliente no usa la clave privada, solo la clave pública. Sin embargo, el cliente desea saber que la clave privada está disponible, porque si el servidor acepta usar esta clave pública, el cliente deberá demostrar que conoce la clave privada. El cliente envía un mensaje SSH_MSG_USERAUTH_REQUEST con el publickey method que contiene la clave pública. Si el servidor acepta usar esta clave pública ("debug1: El servidor acepta la clave"), luego el cliente usará la clave privada para firmar un desafío enviado por el servidor en otro mensaje SSH_MSG_USERAUTH_REQUEST (en sign_and_send_pubkey - the have_sig byte cambia de 0 ("dime si te gusta esta tecla") a 1 ("aquí hay una prueba de que soy yo, déjame entrar")).

    
respondido por el Gilles 01.03.2017 - 00:50
fuente
3

Supongo que el cliente anunciará el par de claves que está utilizando , dando la clave pública (¡por supuesto!). Pero, de hecho, la clave dada con ese mensaje es una clave privada, que no entiendo completamente por qué. Probé con un ssh -vvv con un servidor que uso

debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug3: no such identity: /home/user/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /home/user/.ssh/id_ecdsa
debug3: no such identity: /home/user/.ssh/id_ecdsa: No such file or directory
debug1: Offering ED25519 public key: /home/user/.ssh/id_ed25519
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-ed25519 blen 51

Como tengo 2 claves en esta computadora: la RSA one y la ECDSA one, parece que el servidor rechazó mi clave RSA. Está bien, no proporcioné la clave RSA a este servidor . Luego, trata de encontrar un DSA y una clave ECDSA, pero no tengo ninguno de estos, por lo que la "no hay tal identidad" es comprensible. Entonces, tengo una clave ED25519, y prueba esta. Y eso va bien, ya que registré este par de claves en ese servidor. Tenga en cuenta que acepta mi clave pública ahora!

Luego, el protocolo continúa ejecutándose a través de un desafío donde el servidor ahora sabe qué clave pública usa para cifrar el desafío , y el cliente (mi máquina) sabe qué clave privada usar para este desafío.

    
respondido por el Leath 28.02.2017 - 18:20
fuente

Lea otras preguntas en las etiquetas