Mi comprensión básica es esta:
- El
sshd
del servidor (conectado a) utiliza la clave pública para cifrar algún mensaje - El
ssh
ossh-agent
del cliente lo descifra y envía algo de vuelta (¿la suma de comprobación del mensaje? ¿su firma?) - El servidor
sshd
verifica que esto sea coherente con el mensaje para autenticar al usuario
¿Pero cuáles son los detalles? ¿Qué es el "mensaje", qué devuelve ssh(-agent)
? ¿Hacer esto con el mismo mensaje original una y otra vez siempre generará la misma comunicación?
¿Se puede reproducir este proceso de autenticación a través de herramientas bash si se utiliza ssh-agent
? P.ej. las claves públicas que proporciona ssh-agent
pueden obtenerse a través de ssh-add -L
, ¿qué pasa con el resto del proceso? ¿O eso requeriría una conexión manual al socket $SSH_AUTH_SOCK
unix y alguna comunicación de bajo nivel?
Relacionado: diálogo de Thomas 'Server-Bob aquí , aunque eso sugiere que el cliente solo firma algunos datos aleatorios que luego se verificará contra todas las claves públicas del usuario del servidor authenticated_keys
. Por otra parte, esta ilustración afirma que el mensaje está cifrado en la clave pública del usuario previamente determinado. (no la del cifrado ssh) y el cliente genera la suma de comprobación que también depende de algún ID de sesión aleatorio. ¿Cuál es la correcta? ¿O ambos solo cuentan parte de la historia realmente más compleja?