我如何跟踪谁的SSH进入我的linux计算机?


23

我正在运行Ubuntu 10.04。有没有一种方法可以使我每天获取有关谁已登录到该框,何时几点的报告,甚至(可能要求太多)有关他们使用的命令的报告?这是一个使用率低的盒子,所以我认为这是查看正在发生什么活动的好方法。

同样,我听说无法通过非交互式shell(例如rsync)或仅通过ssh远程执行单个命令来跟踪何时在盒子上完成了操作。是真的吗,还是有办法记录和跟踪呢?

Answers:


21

谁登录的时间信息可用/var/log/auth.log(或其他发行版中的其他日志文件)。有多个日志监视程序可以提取您配置为相关的信息。在任何健全的系统上,都会记录每个用户身份验证。

要记录每个命令调用(但不记录其参数),请使用Ubuntu上的软件包提供的进程记帐。如果计费子系统已启动并正在运行,则显示有关已完成流程的信息。acct 安装帐户lastcomm


3
/var/log/secure.log是另一个常见的日志文件
Adrian Cornish

9

您还可以使用whow查看当前登录到谁的系统,包括SSH用户。


10
last可能是OP寻找的更好的选择……
jasonwryan 2011年

1
确实。“ last”是您想要的命令。
Sirex

1
这是比所选答案更好的答案。
PaulBGD 2014年

0

通常,当有人登录到用户系统时,然后在/ var / log / messages中将其打印为:

sshd[18468]: Accepted keyboard-interactive/pam for root from 134.64.66.666 port 49867 ssh2

因此,只需将消息grep如下:

grep -E "Accepted keyboard-interactive/pam for" /var/log/messages

0

您还可以修改bash shell来执行一些rsylog。

实际上,您可以在远程主机上设置rsyslog以接受特定的连接。然后修改您要监视的主机外壳-通过编译版本,启用以下功能:

vi config-top.h
#define SYSLOG_HISTORY
#if defined (SYSLOG_HISTORY)
#  define SYSLOG_FACILITY LOG_USER
#  define SYSLOG_LEVEL LOG_INFO
#endif

启用此功能编译后,您可以使用该版本替换bash,或者通过将其登录名重定向到该用户来使用户登录到该版本。

有关更多信息:

https://www.pacificsimplicity.ca/blog/remote-logging-using-syslog-and-logging-shell-commands-remotely


精细。我会更新。
mcdoomington
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.