Ok, me empujaron a escribir una respuesta para aclarar las cosas. No es que el otro esté completamente equivocado, pero no muestra la imagen completa de lo que está sucediendo en el protocolo SSH.
La autenticación para el servidor ssh
funciona en dos pasos. La primera es la validación si su clave pública está en el archivo authorized_keys
, la segunda comprueba si la firma proporcionada por la parte privada apropiada es válida. En el registro de depuración del servidor, puede ver:
sshd[9951]: debug1: test whether pkalg/pkblob are acceptable
sshd[9950]: debug1: matching key found: file /home/user/authorized_keys, line 1
sshd[9950]: Found matching RSA key: 8b:3c:20:c5:03:c4:c0:03:74:83:0a:8f:2d:d8:48:a2
sshd[9951]: Postponed publickey for vagrant from 10.0.2.2 port 54361 ssh2
refiriéndose al primer paso ( test whether pkalg/pkblob are acceptable
). Y luego una
sshd[9950]: debug1: matching key found: file /home/user/authorized_keys, line 1
sshd[9950]: Found matching RSA key: 8b:3c:20:c5:03:c4:c0:03:74:83:0a:8f:2d:d8:48:a2
sshd[9950]: Accepted publickey for user from 10.0.2.2 port 54361 ssh2
sshd[9950]: debug3: mm_answer_keyverify: key 0x7f54ce6ac570 signature verified
está comprobando la firma real realizada por la parte privada de la clave.
Parafraseando ligeramente mi respuesta de otra pregunta en sec.SE
Pero tenga en cuenta, que el primer paso no es obligatorio. Si especifica solo clave privada , o si fuerza el uso de una clave específica, se omite el primer paso y, en este caso, la pregunta anterior es correcta.
Todas las comunicaciones anteriores (autenticación) ya están cifradas. Va en el cable, pero no es posible interceptarlo en el medio. El servidor tiene que verlo, si ofrece esta clave.
Si le preocupa su clave pública, tenga en cuenta que, por ejemplo, Gitbub está exponiendo las claves públicas en la url https://github.com/<username>.keys
. No es un gran problema como dice un nombre (público). En base a esto, hay un servicio , que lo identifica incluso fuera de github, pero aún debe realice el primer paso (conéctese a un servidor que no sea de confianza, lo que suele ser una mala idea).