为什么“ssh root@server 'last | head'”之后没有登录用户?

为什么“ssh root@server 'last | head'”之后没有登录用户?

当我运行这个程序时 Linux 如何反应?

ssh root@server 'last | head'

当我运行多个此命令时,我看到以下输出:

root     pts/0        MyIPv4            Fri Dec 30 16:17 - 16:17  (00:00)
reboot   system boot  5.15.0-56-generi  Fri Dec 30 01:03   still running
get      pts/1        MyIPv4            Thu Dec 29 10:05 - 10:11  (00:05)
get      pts/1        MyIPv4            Thu Dec 29 08:31 - 09:20  (00:48)
root     pts/1        MyIPv4            Wed Dec 28 13:12 - 13:34  (00:21)
root     pts/1        MyIPv4            Tue Dec 27 21:56 - 21:56  (00:00)
root     pts/3        tmux(3176049).%1  Tue Dec 27 09:27 - 09:28  (00:01)
root     pts/2        tmux(3176049).%0  Tue Dec 27 09:26 - 09:28  (00:02)
root     pts/1        MyIPv4            Tue Dec 27 09:26 - 09:28  (00:02)
root     pts/1        MyIPv4            Mon Dec 26 20:33 - 20:35  (00:01)

有什么办法可以查看是否已经使用上述命令登录?

我也检查了这一点,但没有得到结果:

ssh root@server 'history'
ssh root@server 'history | tail'

答案1

一般使用的wtmp日志last用来记录交互的登录,即与终端 (tty) 关联的登录。(同样,使用的 utmp 文件who仅列出当前活动的终端会话,而不列出其他登录类型。)

或将分配一个终端并将显示在(utmp) 或(wtmp) 中,但ssh host或不会。ssh -t host cmdwholastssh host cmdssh -T host

换句话说,wtmp 不是身份验证日志或安全审计日志。如果您想要准确记录所有身份验证,请使用 /var/log/auth.log(或类似文件)中的 PAM 日志。

在使用 systemd 的服务器上,loginctl可能有更准确的会话列表。

答案2

如果指定了命令,它将在远程主机上执行,而不是在登录 shell 上执行。

-SSH 手册页

即,在没有用户登录的情况下运行命令。这就是您的方法不起作用的原因。

但是,SSH 默认会记录所有连接(和连接尝试)。只需journalctl -u ssh.service在服务器上运行即可检查 smb 何时(尝试)连接到服务器。

相关内容