Recentemente atualizamos um servidor SFTP CentOS 7 de alto volume openssh/internal-sftp
para o Rocky Linux 8.
No entanto, desde a atualização, estamos enfrentando problemas de tempo limite de login após o servidor estar em execução por 1 a 2 horas. Isso parece estar relacionado ao número de sessões e/ou systemd --user
processos SFTP abertos.
Após 1-2 horas, novos logins SFTP tornam-se extremamente lentos e começamos a ver essas mensagens no log
Apr 14 12:16:58 sftp sshd[330585]: pam_systemd(sshd:session): Failed to create session: Connection timed out
Às vezes, o problema desaparece se sessões SFTP forem fechadas com rapidez suficiente, mas, na maioria das vezes, precisamos reiniciar o servidor para restaurar o serviço normal.
Seria aconselhável desabilitar, systemd-logind
já que isso não parece necessário para SSH?
ATUALIZAÇÃO
Não tenho certeza se isso é relevante, mas systemctl list-units --state=abandoned
retorna centenas de sessões abandonadas.
ATUALIZAÇÃO 2
Após a desativação, pam_systemd.so
o sistema voltou a funcionar normalmente. Isso efetivamente desativa systemd-logind
as sessões SSH.
Uma redução de 80% na carga do sistema indica uma grande perda de desempenho ao usar systemd-logind
.
Isso é normal?!
Eu usaria primeiro o systemctl mask,
[email protected]
já que o SFTP definitivamente não precisa dele. Isso impediriasystemd --user
a inicialização, mantendo o systemd-logind em geral, e suspeito que isso possa ser uma boa parte dos seus problemas de desempenho.Desabilitar completamente
pam_systemd
é a solução ideal para um servidor que utiliza somente SFTP. A maior desvantagem é que todos os processos de "sessão" permanecem como parte do cgroup sshd.service, em vez de serem movidos para cgroups individuais de usuários/sessões, o que significa que reiniciar o sshd pode encerrar todas as sessões, incluindo o shell SSH do administrador. (Não deveria, já que sshd.service tem KillMode=process, mas não sei se é possível confiar nisso.)Então, se possível, em vez de removê-lo completamente, eu adicionaria um
pam_succeed_if
para pular o módulo pam_systemd apenas para clientes SFTP, mas mantê-lo para sessões de root e outros administradores de sistema (por exemplo, verificando se há membros de "sftpusers" ou não membros de "wheel" ou "sudoers").