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.


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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.