Tenga en cuenta que el servidor TIENE una clave privada y pública que está completamente separada del par de claves que genera como usuario. La clave privada para el servidor generalmente se almacena con la configuración del servidor y la clave pública es transmitida por el servidor cuando intentas conectarte. Su cliente compara la clave pública del servidor con su archivo conocido_hosts. Si se usa correctamente, esto evita los ataques MITM.
Tienes la clave privada para tu cuenta personal. El servidor necesita su clave pública para que pueda verificar que su clave privada para la cuenta que está intentando utilizar está autorizada.
Entonces, usando tu ejemplo. Tanto Bob como Alice tienen claves privadas y claves públicas. Las claves públicas que se han compartido de antemano o como parte de la conexión se utilizan para verificar que los datos cifrados por las claves privadas son legítimos. Si el cliente no tiene la clave pública, o tiene una clave pública diferente, recibirá una advertencia aterradora. Si el servidor no tiene la clave pública del cliente, no podrá ingresar.