如何断开空闲的SFTP用户?

我有一个SFTP服务器,客户端连接每分钟交换文件。 有几个客户谁连接,然后不断开,导致一段时间内的很多连接。 这是窒息的CPU。 我已经在sshd_config中设置了ClientAliveInterval和ClientAliveCountMax,在一段时间后它断开了闲置的ssh连接,但是id似乎没有断开闲置的sftp连接。 如何强制闲置的sftp连接断开连接?

尝试这一步一步:

pstree -p – 将显示整个进程树。

– 谁在做什么。 – 可能这不是必要的(或者你可以得到用户的空闲时间)。

ps aux| grep sshd

尝试获取sshd会话的进程ID,sshd会话是sftp服务器的父进程。 您可以从ps aux | grep sshd获取用户的sftp进程ID ps aux | grep sshd ,杀死它的父进程:

ps的输出将如下所示:

 root@server:/# ps aux | grep ssh root 3531 0.0 0.0 5312 1012 ? Ss Jan02 0:00 /usr/sbin/sshd root 24034 0.0 0.1 8052 2412 ? Ss 13:24 0:00 sshd: metin [priv] metin 24039 0.0 0.0 8052 1500 ? S 13:24 0:00 sshd: metin@notty metin 24042 0.0 0.0 4568 1240 ? Ss 13:24 0:00 /usr/lib/openssh/sftp-server root 24043 0.0 0.1 8052 2632 ? Ss 13:24 0:00 sshd: metin [priv] metin 24048 0.0 0.0 8052 1532 ? S 13:24 0:00 sshd: metin@pts/0 root 24109 0.0 0.0 3000 748 pts/0 R+ 13:26 0:00 grep ssh 

pstree -p输出将如下所示:

 init(1)─┬─apache2(4012)─┬─apache2(23627) │ ├─apache2(23846) │ ├─apache2(23913) │ ├─apache2(23998) │ ├─apache2(24000) │ ├─apache2(24025) │ ├─apache2(24028) │ ├─apache2(24073) │ ├─apache2(24074) │ └─apache2(24075) ├─console-kit-dae(25820) ├─courierlogger(3719)───authdaemond(3720)─┬─authdaemond(3734) │ ├─authdaemond(3736) │ ├─authdaemond(3738) │ ├─authdaemond(3740) │ └─authdaemond(3741) ├─courierlogger(3744)───couriertcpd(3745) ├─courierlogger(3768)───couriertcpd(3769) ├─courierlogger(3786)───couriertcpd(3787) ├─courierlogger(3810)───couriertcpd(3811) ├─cron(3991) ├─dbus-daemon(3475) ├─dd(3451) ├─getty(4038) ├─klogd(3454) ├─master(3882)─┬─pickup(23992) │ ├─qmgr(3885) │ └─tlsmgr(4144) ├─mysqld_safe(3591)─┬─logger(3635) │ └─mysqld(3633)─┬─{mysqld}(3637) │ ├─{mysqld}(3638) │ ├─{mysqld}(3639) │ ├─{mysqld}(3640) │ ├─{mysqld}(3642) │ ├─{mysqld}(3643) │ ├─{mysqld}(3644) │ ├─{mysqld}(3655) │ ├─{mysqld}(861) │ ├─{mysqld}(17322) │ ├─{mysqld}(18125) │ ├─{mysqld}(18872) │ ├─{mysqld}(21229) │ ├─{mysqld}(23352) │ ├─{mysqld}(23353) │ └─{mysqld}(23370) ├─named(3502)─┬─{named}(3504) │ ├─{named}(3505) │ └─{named}(3506) ├─ntpd(3106) ├─saslauthd(3912)─┬─saslauthd(3913) │ ├─saslauthd(3914) │ ├─saslauthd(3915) │ └─saslauthd(3916) ├─sshd(3531)─┬─sshd(24034)───sshd(24039)───sftp-server(24042) │ ├─sshd(24043)───sshd(24048)───bash(24050)───su(24077)───bash(24078)───ps+ │ └─sshd(24094)───sshd(24099)───sftp-server(24101) ├─syslogd(3429) ├─udevd(2216) └─vsftpd(3932) 

而且你将要kill 24034 ,因为它是父进程sshd进程用户“metin”一直用于进程24042(看看上面的ps输出)。

而且你也可以从ps的输出中获得它们的状态(空闲,睡眠,活动等等)。

如果你想这样做,我不知道任何软件,但你可以写自己的脚本。