Я хотел бы отредактировать Last login:
информацию, которая выводится вместе с сообщением дня, но я не могу найти сценарий, который генерирует и выводит эхо.
Где он определен, в легко редактируемом сценарии оболочки, или закрыт в двоичном файле?
Обратите внимание, это отличается от ServerFault: как я могу отредактировать приветственное сообщение при запуске ssh? , Информация о «последнем входе в систему» не распечатывается изнутри /etc/update-motd.d/
, а вместо этого определяется настройкой PrintLastLog
флага и поэтому не может быть отредактирована, как другие части сообщения дня.
utmp
иwtmp
файлах (в зависимости от распространения, регистрации/var/run/utmp
или/var/log/utmp
или посмотреть в/var
каталоге). Эти файлы сохраняются не как текстовые, а как двоичные, поэтому для их редактирования вам понадобятся специальные инструменты. Файл utmp отслеживает текущее состояние входа каждого пользователя. В файле wtmp записываются все истории входа и выхода из системы. Вам понадобятся специальные инструменты для их редактирования, но я не смог ничего найти на самом деле.Ответы:
Похоже, формат напечатанной строки компилируется в
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
?wtmp
, устанавливаютPrintLastLog
флагno
и воссоздают уведомление о «последнем входе» с моим собственным сценарием, помещенным вupdate-motd.d
. Гораздо удобнее в обслуживании. :)motd
результаты, не полностью обновленные. Поэтому я думаю,update-motd
что не может быть запущен при каждом входе.Последняя информация Логин хранится в
/var/log/wtmp
или/var/log/utmp
они двоичные файлы. Не глядя на исходный код для sshd, я не могу быть полностью уверен, но я ожидаю, что он извлекает информацию из этих файлов, используя подходящие системные вызовыКажется маловероятным, что вы найдете способ легко изменить эту информацию, ведь она является частью безопасности пользователей.
Если вы действительно хотите узнать подробности, вам нужно взглянуть на исходный код функции,
login_get_lastlog
которую можно найти вloginrec.c
источник
Другим решением было бы очистить экран в начале файла motd следующим образом:
Примечание: замените
^[
escape-символом (который вы можете создать в нано-редакторе, нажав следующие клавиши: esc+ v+ esc)источник
Возможно, придется немного поработать, если вы просто хотите сменить последний IP-адрес для входа?
Например, вы можете изменить отображаемый IP-адрес на «localhost», снова войдя в ssh с удаленного компьютера!
Удаленный вход через ssh >> ssh username @ localhost
Теперь последний зарегистрированный IP будет localhost
источник