Se você estiver verificando do servidor que as pessoas estão se conectando a , não haverá dados. A chave SSH deve ser descriptografada na memória antes do uso, o que significa que o servidor tem a mesma aparência. A menos que você possa obter uma cópia do arquivo de chave real, você está perdido.
Mas se você está na máquina, as pessoas estão se conectando a partir de , então é trivial - basta olhar para o arquivo-chave.
Senhas em chaves SSH são usadas para criptografar a chave, e o arquivo indica se a criptografia é usada, bem como o tipo.
Uma chave privada criptografada tem esta aparência:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,259001658E2E5C2618A9648EA35122F4
GFzPnlYdGYVTmK5t45xv/m0Nok9czOuFNNuS+Sm5vzGaOa7LBMtRNJgWFBCGsfFl
wouThpuKxV+ArgmzPa9hnEmy18QW0sbza8SKm/3Hbqi8XwCliz2xP2xS+iGSkYDt
...
LAB/DZasuYBSsVadfemDsmrRvUz7/4eJZTxoEvwNQtAWhTS8j9RbRPee4rk1fwew
-----END RSA PRIVATE KEY-----
Enquanto um não criptografado tem esta aparência:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAtdKjJa18HbagmuMvb/gDCpXXYPVqRsXDdwTcG3YY5RlJtdxY
TJD+626tLTyuzzw6ZsGJtScrSjm2Jp5uUrDXnkek39Zxj24bTM9k/tZBeAQubrwO
....
I8u05jPL1WZmre5SVexfFEvAGqMdiWLvURpnQkI7Wn6nXJjEbUOdGQ==
-----END RSA PRIVATE KEY-----
O olho treinado pode notar que a segunda linha contém a palavra " ENCRYPTED ". Essa é sua pista. Se o arquivo contém a palavra "ENCRYPTED" então é, se não for, então não é.
Então aqui está o seu script:
grep -L ENCRYPTED /home/*/.ssh/id_rsa
modifique para se adequar ao seu ambiente, mas você entende a ideia. Obviamente, as pessoas poderiam enganar seu script colocando a palavra "ENCRYPTED" na parte inferior do arquivo, mas estamos assumindo que não.