Il controllo delle chiavi ssh ha passphrase


8

Ho un sacco di utenti, che con chiavi SSH hanno accesso agli account su altri server. Attualmente ho uno script che raccoglie le chiavi pubbliche ssh e le distribuisce sull'account corretto sui server corretti.

Quello che voglio fare è ottenere quello script per verificare che ogni chiave ssh di un determinato utente abbia una passphrase prima di accettare la chiave pubblica e distribuirla.

Ho provato un certo numero di cose, come l'utilizzo di un ssh-agente ssh-adde poi il problema arriva quando ssh-addviene chiesto passphrase.

C'è un modo per ottenere qualcosa come opensslverificare la passphrase, fallire leggermente con un codice di ritorno 1se la chiave ha una passphrase?

Grazie!


Potresti chiarire se il requisito è avere una passphrase o non averla - e per quali motivi?
Grawity,

grawity: Il mio requisito è quello di assicurarmi che gli utenti abbiano impostato passphrase sulle loro chiavi ssh, solo le chiavi con passphrase verranno distribuite agli altri server.
Peter Farmer,

Risposte:


11

Se un file di chiavi utilizza una passphrase ha l'attributo "Tipo di processo:" impostato con la parola "ENCRYPTED".

Quindi, puoi determinare se un file di chiavi utilizza passphrase eseguendolo finde grepper vedere se ha la stringa '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

stampa un elenco di file con passphrase. Quindi puoi abbinare quelli a un elenco di tutti i file di chiavi per individuare quelli che non usano una passphrase. È possibile ottenere un elenco di tutti i file di chiavi, ad esempio lasciando -execfuori il parametro, come segue:

# list all keyfiles
HOMES=/home /mnt/nfs_home
find $HOMES -maxdepth 3 -type f -path '*/.ssh/id* -name "id_[dr]sa*" -print

Non è più possibile con il nuovo formato di chiave SSH, l' Proc-Typeintestazione non viene scritta nel file, nonostante sia crittografata.
Oneiroi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.