$ man ssh-keygen
[...]
It is possible to specify a passphrase when generating the
key; that passphrase will be used to encrypt the private
part of this file using 128-bit AES.
Así que esta frase de paso simplemente cifra la clave localmente. Un atacante con acceso a su sistema no podrá leer la clave privada, porque está cifrada. (Podrían instalar un keylogger, sin embargo). Si su computadora portátil es robada, por ejemplo, su clave ssh podría ser segura si tiene una contraseña segura. O incluso con una frase de contraseña bastante débil (siempre que no sea trivial), le dará tiempo para revocar la llave y pasarla a una nueva, antes de que los atacantes puedan descifrarla.
Es opcional porque puede optar por aceptar el riesgo de que no esté cifrado en el almacenamiento. O quizás tenga habilitado el cifrado de disco, que mitiga algunos de los mismos ataques (pero no todos, por ejemplo: el malware aún puede robar la clave, incluso con el cifrado de disco; por otro lado, una computadora portátil robada sigue siendo segura a menos que se la robe mientras se ejecuta) con la llave en la memoria).
El servidor puede requerir el uso de una clave pública y una contraseña para iniciar sesión. La seguridad de esto es diferente a usar una clave pública cifrada con contraseña. Si usa una clave encriptada, entonces:
- no puede cambiar la contraseña en el lado del servidor, tendrá que generar una nueva clave;
- alguien podría descifrar la contraseña de la clave sin ser detectada, ya que pueden hacerlo sin conexión (si el servidor requiere una contraseña, deben preguntar al servidor "¿es aaaa correcto? ¿Es aaab correcto?", etc.);
- alguien puede descifrar la clave mucho más rápido porque es un ataque sin conexión sin limitaciones de red; y
- el servidor no puede usar algo como fail2ban para rechazar demasiados intentos de inicio de sesión, porque el cracking ocurre fuera de línea.