如何更改 mod 日期格式

如何更改 mod 日期格式

每次我通过 ssh 进入服务器时,服务器都会打印上次登录的日期和时间。但我不喜欢这种格式。例如:

Last login: Sun Jan 31 12:12:13 2016 from 127.0.0.1

我想禁用该消息(在配置中),而是将其位置更改为 motd(00 标头)。我该怎么做?示例应如下所示:

Last login: 2016-01-31 12:12:13 from 127.0.0.1

答案1

如 serverfault 上的相关问题所示,如何编辑 SSH“上次登录”消息? ,该行本身内置于/usr/sbin/sshd二进制文件中。因此,要编辑它,就必须编辑源代码并自行重新编译,这有点麻烦,而且工作量比必要的要大

确认在 serverfault 问题上找到的结果

DIR:/xieerqi
skolodya@ubuntu:$ file /usr/sbin/sshd                                          
/usr/sbin/sshd: ELF 64-bit LSB  shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=b0aaeed8d674586459d21eb2d548a848c33de3a9, stripped

DIR:/xieerqi
skolodya@ubuntu:$ strings /usr/sbin/sshd | grep -i "last login"                
Last login: %s
Last login: %s from %s

但是,你可以告诉sshd不要打印当天的消息和上次登录(按照这个答案

使用任意编辑器打开该文件/etc/ssh/sshd_config,请确保您使用命令行编辑器sudo,如果使用 GUI 编辑器 - gksu,例如

  sudo vi /etc/ssh/sshd_config

添加以下几行

PrintMotd no
PrintLastLog no

您可以将以下函数放入$HOME/.bashrc顶部的文件中

function ssh_login_date
 {
 if [ ! -z "$SSH_CLIENT" ]; then
   printf "Last login %s from %s \n" "$( date +%F" "%H":"%M":"%S  )" "$(echo $SSH_CLIENT|  awk '{print $1}' )"
 fi
}

并在文件末尾调用该函数

ssh_login_date

相关内容