每次我通过 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