如何编辑SSH“上次登录”消息?


16

我想编辑Last login:与当天的消息一起打印出的信息,但是找不到生成和回显的脚本。

是在易于编辑的Shell脚本中定义它的位置,还是在二进制文件中将其封闭?


注意,这不同于ServerFault:ssh启动时如何编辑欢迎消息?。“上次登录”信息不是从内部打印出来的/etc/update-motd.d/,而是由设置PrintLastLog标志定义的,因此不能像当天消息的其他部分一样进行编辑。


此信息保存在utmpwtmp文件(根据分布,检查/var/run/utmp/var/log/utmp或看/var目录)。这些文件不是保存为文本,而是二进制文件,因此您将需要特殊的工具来编辑它们。utmp文件跟踪每个用户的当前登录状态。wtmp文件记录所有登录和注销历史记录。您将需要特殊的工具来对其进行编辑,但是我真的找不到任何东西。
2014年

Answers:


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 2014年

1
实际上,我正在计划源代码的其他方面。我想看看他们如何解析数据wtmp,将PrintLastLog标志设置为no,并使用放置在我自己的脚本中来重新创建“最后一次登录”通知update-motd.d。更易于维护。:)
IQAndreas

1
我经常看到motd输出不完全是最新的。因此,我认为update-motd可能不会在每次登录时都运行。
卡巴斯德(Kasperd),2014年

@kasperd作为cron作业,它每10分钟更新一次。这是为了帮助的情况下,它会尝试做一些“慢”像从互联网上一个字符串,因此它不会使服务器变慢每次有人日志。
IQAndreas

3
“上次登录”消息是特定于用户的,而motd是系统范围的。我不确定您要如何重新创建消息。另外,有些人实际阅读了此消息,并希望它尽可能准确。
西蒙·里希特

5

最后的登录信息存储在其中,/var/log/wtmp或者/var/log/utmp它们是二进制文件。如果不查看sshd的源代码,我不能完全确定,但是我希望它可以使用适当的系统调用从那些文件中检索信息。

看来您不可能找到一种方法来轻松更改此信息,这毕竟是用户安全的一部分。


如果您确实想要详细信息,则需要查看该函数的源代码,该源代码login_get_lastlog可以在loginrec.c


@lain +1是由于源代码的建议而产生的-尽管我认为这不是一个很好的解决方案,但他所需的只是一个本地git镜像。恕我直言,即使对于sysadms,使用来源也不是魔鬼。
彼得-恢复莫妮卡2014年

2

另一个解决方案是像这样清除motd文件开头的屏幕:

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

注意:替换^[为转义符号(可以在nano编辑器中通过按以下键创建该符号:esc+ v+ esc


-2

如果您只想更改上次登录IP,也许可以解决一些问题?

例如,您可以通过从远程控制机器再次登录ssh来将显示的IP地址更改为“ localhost”!

通过SSH >> ssh username @ localhost进行远程登录

现在记录的最后一个IP将是localhost

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.