我如何查看用户是否通过 sftp 登录?

我如何查看用户是否通过 sftp 登录?

我在办公室运行一个 Linux 文件服务器,我们使用 SFTP 让远程合作伙伴登录并下载文件。有没有办法查看是否有任何活动连接或登录,以便我知道何时可以安全地对机器进行维护?

由于这台机器几乎一直在处理大文件,因此定期维护经常会因为有人上传

答案1

您还可以执行以下操作:

ps -ef | grep '[s]shd' | grep -v ^root

这应该会显示任何 sshd 会话(用于 sftp)。我注意到我的机器上的 sshd 进程命令行包含“$USER@notty”,这是有道理的,因为我没有使用终端会话登录。您可以使用以下方式收紧上面的 grep:

ps -ef | grep '[s]shd:.*@notty' | grep -v ^root

顺便提一句:grep 中的方括号是为了不让“grep sshd”进程出现在进程列表中。[s]shd 匹配 sshd,但不匹配自身。它保存了“grep -v grep”

答案2

你也可以尝试 fuser -u ssh/tcp

答案3

我认为您可以使用命令行程序who来查看这一点。我注意到一些报告说这样做不起作用,但我仍然认为它可能有效(也许是 ssh 设置)。

sftp 建立在 SSH 之上。它代表“SSH 文件传输协议”。当您通过 ssh 登录时,“who”会将您作为登录用户包含在其输出中。因此,我希望这也适用于活动的 sftp 会话。

2008 年的讨论还建议您为此使用“netstat”。它还建议通过“watch”运行“who”,这样您无需执行任何操作即可看到更新。

相关内容