OpenSSH 服务器的奇怪行为缓慢地消耗所有可用内存

OpenSSH 服务器的奇怪行为缓慢地消耗所有可用内存

我有一台运行 pgbouncer 服务器和 Open SSH 服务器的机器,以便客户端可以建立到服务器的隧道并连接到数据库。

现在,所有客户端都将连接保持活动状态大约 3 分钟,然后连接将关闭。正如您所看到的,下图显示了运行命令:

ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc

多次强调了 sshd 进程数量在短时间内减少的事实。

 sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    158     158     790
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    150     150     750
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    146     146     730
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    140     140     700
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    140     140     700
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    140     140     700
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    140     140     700
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    136     136     680
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    132     132     660
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    132     132     660
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    132     132     660
sosepe@pgbouncer:~$ netstat -nt | grep :22
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    298     298    1490
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    324     324    1620

但不会持续很长一段时间。

我的意思是,几个小时后再次运行该命令会显示进程数量的实际增加情况。那是因为其中一些从未真正关闭。

sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
    324     324    1620

几个小时后,结果如下:

sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
   1926    1926    9630

这些是后果:

 Private  +   Shared  =  RAM used   Program

  4.0 KiB +  22.0 KiB =  26.0 KiB   agetty
132.0 KiB +  27.5 KiB = 159.5 KiB   vnstatd
128.0 KiB +  45.5 KiB = 173.5 KiB   systemd-udevd
136.0 KiB +  65.0 KiB = 201.0 KiB   cron
216.0 KiB +  33.0 KiB = 249.0 KiB   tail
112.0 KiB + 239.5 KiB = 351.5 KiB   systemd-timesyncd
504.0 KiB +  50.0 KiB = 554.0 KiB   lvmetad
192.0 KiB + 481.5 KiB = 673.5 KiB   vsftpd
908.0 KiB +  92.0 KiB =   1.0 MiB   sudo
916.0 KiB + 103.0 KiB =   1.0 MiB   pgbouncer
644.0 KiB + 604.0 KiB =   1.2 MiB   vmtoolsd
  1.3 MiB +  47.0 KiB =   1.3 MiB   rsyslogd
  1.2 MiB + 247.0 KiB =   1.5 MiB   CloudEndure_Age (4)
  1.4 MiB +  81.0 KiB =   1.5 MiB   dbus-daemon
  1.6 MiB + 331.0 KiB =   1.9 MiB   su (4)
  1.2 MiB + 892.0 KiB =   2.1 MiB   VGAuthService
  1.7 MiB + 582.0 KiB =   2.2 MiB   collectd
  2.7 MiB + 268.0 KiB =   3.0 MiB   systemd-logind
  2.9 MiB +  63.5 KiB =   3.0 MiB   bash
  4.3 MiB + 231.5 KiB =   4.5 MiB   systemd-journald
  2.7 MiB +   3.6 MiB =   6.2 MiB   php-fpm7.3 (3)
  4.8 MiB +   1.8 MiB =   6.6 MiB   (sd-pam) (3)
  6.5 MiB +   3.3 MiB =   9.8 MiB   systemd (4)
  5.8 MiB +   4.1 MiB =   9.9 MiB   php-fpm7.2 (3)
  5.7 MiB +   6.5 MiB =  12.2 MiB   php-fpm5.6 (3)
 16.1 MiB + 153.0 KiB =  16.3 MiB   run_linux_migration_scripts_periodically (2)
 17.2 MiB + 166.5 KiB =  17.3 MiB   update_onprem_volumes (2)
 18.5 MiB + 145.5 KiB =  18.6 MiB   tailer (2)
 11.8 MiB +  13.1 MiB =  24.9 MiB   apache2 (11)
159.3 MiB + 180.0 KiB = 159.5 MiB   java
741.6 MiB +   2.1 GiB =   2.8 GiB   sshd (4469)
---------------------------------
                          3.1 GiB
=================================

SSHD 消耗了近 3 GB 内存,这种情况会一直持续到机器重新启动为止。

关于问题可能出在哪里的任何线索吗?

谢谢!

聚苯乙烯

这是conf文件:

Port 10110

Protocol 1,2

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes

SyslogFacility AUTHPRIV
LogLevel INFO

PermitRootLogin no
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes

MACs hmac-md5,hmac-sha1,[email protected],hmac-ripemd160
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

[email protected],diffie-hellman-group-exchange-sha256,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521
KexAlgorithms [email protected],diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521

PermitEmptyPasswords no
PasswordAuthentication yes

ChallengeResponseAuthentication no

UsePAM yes

GatewayPorts yes

ClientAliveInterval 600

PermitTunnel yes

MaxSessions 50

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

Subsystem   sftp    /usr/libexec/openssh/sftp-server

答案1

在运行 Oracle Linux 和 Oracle 数据库的服务器上有相同的行为,我们注意到 sshd 服务正在消耗所有内存,直到内存耗尽并且服务器需要重新启动。我们怀疑这只是在我们为 Linux 实施 CIS 基准测试时才开始的。在我们的场景中,一旦我们启动 Oracle 数据库实例,sshd 服务就会开始使用内存。目前我们已禁用 sshd 服务,直到找到根本原因。我们已尽力禁用 PAM 进行身份验证,但无济于事。希望有人找到这个问题的原因。

相关内容