Bash peut-il me dire quelle clé publique SSH a été utilisée pour l'authentification?

14

Disons que je veux suivre mes rootutilisateurs. Chacun d'eux a une clé privée unique et leurs clés publiques ont été stockées dans /root/.ssh/authorized_keys.

Étant donné que chaque utilisateur se connecte avec sa clé unique, comment savoir depuis une session BASH quelle clé a été utilisée pour s'authentifier? J'ai essayé de regarder les variables d'environnement lorsque je me connecte, mais je ne vois rien qui corrèle ma session avec ma clé publique.

PP.
la source
Légèrement lié: définir LogLevel VERBOSE dans votre (openssh) sshd_config enregistrera l'empreinte digitale de la clé utilisée pour vous connecter.
andol

Réponses:

21

Vous pouvez ajouter le nom d'utilisateur à la clé publique ~/.ssh/authorized_keyssur le serveur et l'exporter en tant que valeur d'environnement:

environment="REALUSER=realusername" ssh-dsa AAA...

Cela définira la variable d'environnement REALUSER qui sera ensuite disponible pour être utilisée dans bash. Cela ne fonctionnera que si PermitUserEnvironmentest défini sur true danssshd_config

Jenny D
la source
Whoah .. vraiment? Cool! Tu veux dire ~/.ssh/authorized_keys? Je n'avais nullement connaissance de cela.
PP.
5
Oui, c'est ça. Vous pouvez faire beaucoup de choses intéressantes là-bas - man sshvous en dira plus sous la rubrique AUTHORIZED_KEYS FILE FORMAT.
Jenny D
4
Cela peut dépendre de la version, mais j'ai dû utiliser man sshdpour trouver la AUTHORIZED_KEYS FILE FORMATsection.
Matthew Crumley
2
N'oubliez pas que l'activation de PermitUserEnvironment a des implications en termes de sécurité. Lire man sshd
Florin Andrei