Czy Bash może mi powiedzieć, który klucz publiczny SSH został użyty do uwierzytelnienia?

14

Powiedzmy, że chcę śledzić moich rootużytkowników. Każdy z nich ma unikalny klucz prywatny, a jego klucze publiczne zostały zapisane /root/.ssh/authorized_keys.

Biorąc pod uwagę, że każdy użytkownik loguje się przy użyciu swojego unikalnego klucza, jak mogę stwierdzić w sesji BASH, który klucz został użyty do uwierzytelnienia? Próbowałem spojrzeć na zmienne środowiskowe, kiedy się loguję, ale nie widzę niczego, co koreluje moją sesję z moim kluczem publicznym.

PP.
źródło
Nieznacznie powiązane: ustawienie LogLevel VERBOSE w twoim (openssh) sshd_config będzie rejestrować odcisk palca klucza używanego do logowania.
andol

Odpowiedzi:

21

Możesz dodać nazwę użytkownika do klucza publicznego ~/.ssh/authorized_keysna serwerze i wyeksportować go jako wartość środowiska:

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

To ustawi zmienną środowiskową REALUSER, która będzie wtedy dostępna do użycia w bash. Działa to tylko wtedy, gdy PermitUserEnvironmentjest ustawione na true wsshd_config

Jenny D.
źródło
Whoah .. naprawdę? Chłodny! Masz na myśli ~/.ssh/authorized_keys? Nigdy o tym nie wiedziałem.
PP.
5
Tak, to wszystko. Możesz zrobić tam wiele interesujących rzeczy - man sshpod hasłem znajdziesz więcej informacji AUTHORIZED_KEYS FILE FORMAT.
Jenny D
4
Może to zależeć od wersji, ale musiałem użyć, man sshdaby znaleźć AUTHORIZED_KEYS FILE FORMATsekcję.
Matthew Crumley,
2
Należy pamiętać, że włączenie PermitUserEnvironment ma pewne konsekwencje dla bezpieczeństwa. Przeczytaj człowieka sshd
Florin Andrei