Jak edytować komunikat „ostatnie logowanie” SSH?

16

Chciałbym edytować Last login:informacje wydrukowane wraz z komunikatem dnia, ale nie mogę znaleźć skryptu, który generuje i generuje echo.

Gdzie to jest zdefiniowane, w łatwym do edycji skrypcie powłoki, lub zamknięte w pliku binarnym?


Uwaga: różni się to od ServerFault: Jak mogę edytować wiadomość powitalną po uruchomieniu ssh? . Informacje o „ostatnim logowaniu” nie są drukowane od wewnątrz /etc/update-motd.d/, ale są definiowane poprzez ustawienie PrintLastLogflagi, dlatego nie można ich edytować tak jak inne części wiadomości dnia.

IQAndreas
źródło
Ta informacja jest zapisywana w utmpi wtmppliki (w zależności od dystrybucji, zameldowania /var/run/utmplub /var/log/utmplub szukać w /varkatalogu). Pliki te nie są zapisywane jako tekst, ale jako pliki binarne, więc będziesz potrzebować specjalnych narzędzi do ich edycji. Plik utmp śledzi bieżący stan logowania każdego użytkownika. Plik wtmp rejestruje całą historię logowania i wylogowania. Będziesz potrzebował specjalnych narzędzi do ich edycji, ale tak naprawdę nic nie mogłem znaleźć.
phoops

Odpowiedzi:

14

Wygląda na to, że format drukowanej linii jest wkompilowany w sshd:

[me@risby ~]$ ssh lory
Last login: Fri May 23 10:59:01 2014 from 2a01:2c0:e:300:7271:bcff:feac:445a
[me@lory ~]$ strings /usr/sbin/sshd | grep -i "last login"
Last login: %s
Last login: %s from %s

Nie widzę też żadnej opcji konfiguracji, aby to zmienić, więc musisz edytować źródło i ponownie skompilować.

Edycja : W ograniczającym przypadku możesz znaleźć źródło na http://www.openssh.org . Ale nie mówisz nam, że używasz OpenSSH, ani nic na temat swojej platformy, więc trudno jest być bardziej szczegółowym. Jeśli jest to system Linux, znacznie lepiej byłoby, gdyby źródło było właściwe dla twojej dystrybucji w zwykły sposób i ponownie skompilowałaś za pomocą mechanizmów specyficznych dla tej dystrybucji.

Ale tak naprawdę, to nie powinien robić tego w ogóle , chyba że masz bardzo przekonujące-biznesu powód, aby to zrobić: robisz konserwacyjnych koszmar dla siebie, będzie ręcznie skompilowane wersji pakietu bezpieczeństwa wrażliwych.

Szalony Kapelusznik
źródło
Gdzie można znaleźć kod źródłowy sshd?
IQAndreas
1
Właściwie planowałem coś innego ze źródłem. Chciałem zobaczyć, jak analizują dane wtmp, ustawiają PrintLastLogflagę noi ponownie tworzą powiadomienie o „ostatnim logowaniu” z własnym skryptem update-motd.d. Znacznie bardziej przyjazny w utrzymaniu. :)
IQAndreas
1
Często widzę, że motdwyniki nie są całkowicie aktualne. Myślę więc, że update-motdmoże nie być uruchamiane przy każdym logowaniu.
kasperd
@kasperd Aktualizuje się co 10 minut jako zadanie CRON. Ma to pomóc w przypadku, gdy próbuje zrobić coś „powolnego”, np.
Pobrać
3
Komunikat „ostatniego logowania” jest specyficzny dla użytkownika, podczas gdy motd jest ogólnosystemowy. Nie jestem pewien, jak chcesz odtworzyć wiadomość. Są też ludzie, którzy faktycznie czytają tę wiadomość i chcą, aby była jak najbardziej dokładna.
Simon Richter
5

Informacje o ostatnim logowaniu są przechowywane /var/log/wtmplub /var/log/utmpsą to pliki binarne. Nie patrząc na kod źródłowy sshd, nie mogę być całkowicie pewien, ale spodziewałbym się, że pobiera informacje z tych plików za pomocą odpowiednich wywołań systemowych

Wydaje się mało prawdopodobne, że znajdziesz sposób na łatwą zmianę tych informacji, mimo że stanowią one część bezpieczeństwa użytkowników.


Jeśli naprawdę potrzebujesz krwawych szczegółów, musisz spojrzeć na kod źródłowy funkcji, w login_get_lastlogktórej można znaleźćloginrec.c

użytkownik9517
źródło
@lain +1 z powodu sugestii kodu źródłowego - chociaż nie sądzę, że było to krwawe rozwiązanie, wszystko, czego potrzebuje, to lokalne lustro git. Imho korzystający ze źródła nie pochodzi od diabła, nawet dla sysadmów.
peterh - Przywróć Monikę
2

Innym rozwiązaniem byłoby wyczyszczenie ekranu na początku pliku motd w następujący sposób:

^[[H^[[2J
whatever was originally in the motd file here

Uwaga: zamień ^[na symbol ucieczki (który możesz utworzyć w edytorze nano, naciskając następujące klawisze: esc+ v+ esc)

użytkownik514464
źródło
-2

Być może trochę się obejdzie na wypadek, gdybyś chciał zmienić adres IP ostatniego logowania?

Na przykład możesz zmienić wyświetlany adres IP na „localhost”, logując się ponownie do ssh ze zdalnego komputera!

Zdalne logowanie za pośrednictwem ssh >> nazwa użytkownika ssh @ localhost

Teraz ostatnim zarejestrowanym adresem IP będzie localhost

kofeina
źródło