La comprobación de las claves ssh tiene frases de contraseña

8

Tengo un montón de usuarios, que con claves SSH tienen acceso a cuentas en otros servidores. Actualmente tengo un script que recopila las claves públicas ssh y las distribuye a la cuenta correcta en los servidores correctos.

Lo que quiero hacer es obtener esa secuencia de comandos para verificar que la clave ssh de cualquier usuario tenga una frase de contraseña antes de aceptar la clave pública y distribuirla.

He intentado varias cosas, como usar un ssh-agenty, ssh-addy luego el problema surge cuando me ssh-addpiden una frase de contraseña.

¿Hay alguna manera de obtener algo como opensslverificar la frase de contraseña, fallar ligeramente con un código de retorno de 1si la clave tiene una frase de contraseña?

¡Gracias!

Peter Farmer
fuente
¿Podría aclarar si el requisito es tener una frase de contraseña o no tenerla, y por qué razones?
user1686
Gravedad: mi requisito es asegurarme de que los usuarios hayan establecido frases de contraseña en sus claves ssh, solo las claves con frases de contraseña se distribuirán a los otros servidores.
Peter Farmer el

Respuestas:

11

Si un archivo de claves utiliza una frase de contraseña, tiene el atributo "Tipo de proceso:" establecido con la palabra "ENCRYPTED" adjunta.

Por lo tanto, puede determinar si un archivo de clave utiliza una frase de contraseña ejecutándolo findy grepver si tiene la cadena 'ENCRYPTED'.

# list keyfiles that USE a passphrase
HOMES=/home /mnt/nfs_home
find $HOMES -maxdepth 3 -type f -path '*/.ssh/id* -name "id_[dr]sa*" -exec grep -q "ENCRYPTED" {} \; -print

imprime una lista de archivos que tienen frases de contraseña. Luego, puede compararlos con una lista de todos los archivos de claves para seleccionar aquellos que no usan una frase de contraseña. Se puede obtener una lista de todos los archivos de claves, por ejemplo, dejando el -execparámetro fuera, como sigue:

# list all keyfiles
HOMES=/home /mnt/nfs_home
find $HOMES -maxdepth 3 -type f -path '*/.ssh/id* -name "id_[dr]sa*" -print
Jawa
fuente
Ya no es posible con el nuevo formato de clave SSH, el Proc-Typeencabezado no se escribe en el archivo, a pesar de estar cifrado.
Oneiroi