Как мне отредактировать сообщение SSH «последний вход»?

16

Я хотел бы отредактировать Last login:информацию, которая выводится вместе с сообщением дня, но я не могу найти сценарий, который генерирует и выводит эхо.

Где он определен, в легко редактируемом сценарии оболочки, или закрыт в двоичном файле?


Обратите внимание, это отличается от ServerFault: как я могу отредактировать приветственное сообщение при запуске ssh? , Информация о «последнем входе в систему» не распечатывается изнутри /etc/update-motd.d/, а вместо этого определяется настройкой PrintLastLogфлага и поэтому не может быть отредактирована, как другие части сообщения дня.

IQAndreas
источник
Эта информация сохраняется в utmpи wtmpфайлах (в зависимости от распространения, регистрации /var/run/utmpили /var/log/utmpили посмотреть в /varкаталоге). Эти файлы сохраняются не как текстовые, а как двоичные, поэтому для их редактирования вам понадобятся специальные инструменты. Файл utmp отслеживает текущее состояние входа каждого пользователя. В файле wtmp записываются все истории входа и выхода из системы. Вам понадобятся специальные инструменты для их редактирования, но я не смог ничего найти на самом деле.
фотки

Ответы:

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 Обновляется каждые 10 минут как хрон. Это поможет в случае, если он попытается сделать что-то «медленное», например, извлечь строку из Интернета, чтобы не замедлять работу сервера при каждом входе в систему.
IQAndreas
3
Сообщение «Последний вход в систему» ​​зависит от пользователя, в то время как motd распространяется на всю систему. Я не уверен, как вы хотите восстановить сообщение. Также есть люди, которые на самом деле читают это сообщение и хотят, чтобы оно было максимально точным.
Саймон Рихтер
5

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

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


Если вы действительно хотите узнать подробности, вам нужно взглянуть на исходный код функции, login_get_lastlogкоторую можно найти вloginrec.c

user9517
источник
@lain +1 из-за предложения исходного кода - хотя я не думаю, что это было ужасное решение, все, что ему нужно - это локальное зеркало git. Имхо, использующий источник, не от дьявола даже для сисадм.
Петер - Восстановить Монику
2

Другим решением было бы очистить экран в начале файла motd следующим образом:

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

Примечание: замените ^[escape-символом (который вы можете создать в нано-редакторе, нажав следующие клавиши: esc+ v+ esc)

user514464
источник
-2

Возможно, придется немного поработать, если вы просто хотите сменить последний IP-адрес для входа?

Например, вы можете изменить отображаемый IP-адрес на «localhost», снова войдя в ssh с удаленного компьютера!

Удаленный вход через ssh >> ssh username @ localhost

Теперь последний зарегистрированный IP будет localhost

кофеин
источник