![如何编辑 SSH“上次登录”消息?](https://linux22.com/image/633483/%E5%A6%82%E4%BD%95%E7%BC%96%E8%BE%91%20SSH%E2%80%9C%E4%B8%8A%E6%AC%A1%E7%99%BB%E5%BD%95%E2%80%9D%E6%B6%88%E6%81%AF%EF%BC%9F.png)
我想编辑Last login:
与当天消息一起打印出来的信息,但我找不到生成并回显的脚本。
它是在哪里定义的,在易于编辑的 shell 脚本中,还是在二进制文件中关闭?
请注意,这与ServerFault:如何编辑 ssh 启动时的欢迎消息?。“上次登录”信息是不是从内部打印出来/etc/update-motd.d/
,而是通过设置PrintLastLog
标志来定义,因此不能像当天消息的其他部分那样进行编辑。
答案1
看起来打印行的格式被编译成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 系统,您最好以通常的方式获取适合您的发行版的源代码,然后通过特定于您的发行版的机制重新编译。
但实际上你不应该这样做根本除非你有非常令人信服的商业理由这样做:你正在进行维护恶梦为自己准备一个手动编译版本的安全敏感包。
答案2
上次登录信息存储在二进制/var/log/wtmp
文件中/var/log/utmp
。如果不查看 sshd 的源代码,我无法完全确定,但我认为它会使用合适的系统调用从这些文件中检索信息
您似乎不太可能找到轻松更改此信息的方法,毕竟它是用户安全的一部分。
如果你真的想要了解详细信息,那么你需要查看该函数的源代码,login_get_lastlog
可以在loginrec.c
答案3
另一个解决方案是在 motd 文件开头清除屏幕,如下所示:
^[[H^[[2J
whatever was originally in the motd file here
注意:^[
用转义符号替换(您可以在 nano 编辑器中按以下键创建:esc++ )vesc
答案4
如果您只是想更改上次登录的 IP,也许可以采取一些解决方法?
例如,您可以通过从远程控制机器再次登录 ssh 将显示的 IP 地址更改为“localhost”!
通过 ssh 远程登录 >>ssh 用户名@localhost
现在记录的最后一个 IP 将是本地主机