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


11

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

由于机器几乎一直在处理大型文件,因此经常由于有人上传而导致定期维护失败

Answers:


11

您也可以这样做:

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'


4
我最终使用netstat -atn | grep ':22'来查看端口22上是否有开放的通信量。我还发现我可以检查系统上位于'/var/log/auth.log'的sshd日志,以查看是否所有打开过sshd的用户都可以访问。会议已经结束。
aVeRTRAC


1

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

sftp是建立在SSH之上的。它代表“ SSH文件传输协议”。当您通过ssh登录时,“谁”会将您包括在登录用户中,并显示输出信息。因此,我希望它也可以与活动的sftp会话一起使用。

从2008年的讨论也表明你可以使用该用“netstat”。它还包括通过“监视”运行“谁”的建议,以便您无需执行任何操作即可查看更新。


1
谁不显示通过ssh登录的用户(我只是从笔记本电脑登录并检查)。
aVeRTRAC

这是古怪的,那一定是一个设定。至于我敢肯定这该死的做了这么为我..好多年,多年..
詹姆斯牛逼斯内尔

知道该设置在哪里吗?我在工作时在一台公共服务器上尝试了此操作,并列出了多个用户,从中看起来很真实。
aVeRTRAC

1
谁显示谁当前正在运行登录外壳。根据用户的运行情况,它可能会或可能不会被视为登录外壳。服务器sftp的一半没有,因此为什么sftp会话不显示在谁身上。
珀金斯
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.