Як редагувати SSH-повідомлення "останнього входу"?


16

Я хотів би відредагувати Last login:інформацію, яка роздруковується разом із повідомленням дня, але я не можу знайти сценарій, який генерує та повторює.

Де це визначено у простому для редагування скрипті оболонки чи закрито у двійковому?


Зауважте, це відрізняється від ServerFault: Як я можу редагувати вітальне повідомлення під час запуску ssh? . Інформація про "останнє вхід" не друкується зсередини /etc/update-motd.d/, а натомість визначається встановленням PrintLastLogпрапора, і тому не може бути змінена, як і інші частини повідомлення дня.


Ця інформація зберігається в utmpі wtmpфайли ( в залежності від розподілу, перевірки в /var/run/utmpабо /var/log/utmpабо дивитися в /varкаталозі). Ці файли зберігаються не як текст, а як бінарні, тому для їх редагування вам знадобляться спеціальні інструменти. Файл utmp відстежує поточний стан входу кожного користувача. Файл wtmp записує всі входи та історію виходів. Вам знадобляться спеціальні інструменти для їх редагування, але я нічого не зміг знайти насправді.
foops

Відповіді:


14

Схоже, формат друкованого рядка компілюється у 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

Я не бачу жодної опції налаштування для зміни цього, тому вам потрібно буде відредагувати джерело та перекомпілювати.

Редагувати : У обмежувальному випадку ви можете знайти джерело на веб- сайті http://www.openssh.org . Але ви не кажете нам, що ви використовуєте OpenSSH або щось на вашій платформі, тому важко бути більш конкретним. Якщо це система Linux, ви б зробили набагато краще, щоб отримати джерело, відповідний вашому дистрибутиву, звичайним способом і перекомпілювати за допомогою своїх специфічних для дистрофу механізмів.

Але насправді, ви не повинні цього робити взагалі, якщо у вас є надзвичайно вагома ділова причина для цього: ви робите для себе кошмар технічного обслуговування , переходячи до складеної вручну версії пакета, орієнтованого на безпеку.


Де можна знайти вихідний код позаду sshd?
IQAndreas

1
Насправді я планував щось інше з джерелом. Я хотів побачити, як вони розбирають дані wtmp, встановлюють PrintLastLogпрапор noі заново створюють повідомлення про "останнє вхід" із власним сценарієм, розміщеним у update-motd.d. Набагато більш зручне обслуговування. :)
IQAndreas

1
Я часто бачу, що motdвихід не є повністю сучасним. Тому я думаю, що це update-motdможе не працювати при кожному вході.
kasperd

@kasperd Він оновлюється кожні 10 хвилин як робота з хроном. Це допоможе в тому випадку, якщо він намагається зробити щось "повільне", як отримати рядок з Інтернету, тому це не змушує сервер сповільнюватися кожного разу, коли хтось увійде в систему.
IQAndreas

3
Повідомлення "останній вхід" є специфічним для користувача, тоді як motd - загальносистемним. Я не впевнений, як ви хочете відтворити повідомлення. Також є люди, які насправді читають це повідомлення і хочуть, щоб воно було максимально точним.
Саймон Ріхтер

5

Остання інформація про вхід зберігається /var/log/wtmpабо /var/log/utmpє двійковими файлами. Не дивлячись на вихідний код для sshd, я не можу бути повністю впевненим, але я би сподівався, що він отримує інформацію з цих файлів за допомогою відповідних системних викликів

Здається, ви навряд чи знайдете спосіб легко змінити цю інформацію, адже вона є частиною безпеки користувачів.


Якщо ви дійсно хочете деталі горі, тоді вам слід переглянути вихідний код функції, login_get_lastlogяку можна знайти вloginrec.c


@lain +1 через пропозицію вихідного коду - хоча я не думаю, що це гарне рішення, все, що йому потрібно, - це місцеве дзеркало git. Імхо, що використовує джерело, не від диявола навіть для сисадмів.
петерх

2

Іншим рішенням буде очищення екрана на початку файлу motd так:

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

Примітка: замініть ^[символом евакуації (який ви можете створити в наноредакторі натисканням наступних клавіш: esc+ v+ esc)


-2

Можливо, вам подобається, якщо ви просто хочете змінити IP-адресу останнього входу?

Наприклад, ви можете змінити показану IP-адресу на "localhost", увійшовши в систему знову на ssh з віддаленої керованої машини!

Віддалене вхід через ssh >> ssh ім'я користувача @ localhost

Тепер останній IP-запис записаний буде localhost

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.