Les connections Ubuntu SSH ne se ferment pas

Nous avons une connection à l'un de nos servers d'une partie externe. Cette partie se connecte en utilisant sftp et télécharge des files. Les sessions ne sont pas fermées par cette partie et elles ne savent pas comment procéder (c'est un server Windows et apparemment les scripts qu'ils utilisent ne le supportent pas).

Maintenant, le server s'est écrasé la semaine dernière parce qu'il était faible en memory. Après quelques searchs, j'ai découvert qu'il y avait 2500 connections SSH (quelques mois environ). Chacun ne prend qu'un peu de memory, mais set, il a écrasé le server. Je les ai tous tués et maintenant il fonctionne bien.

Comment puis-je éviter que cela ne se reproduise? J'aimerais que toutes les sessions soient tuées après quelques heures. Est-ce que cela est possible du côté du server ou dois-je créer un script pour moi-même?

On a beaucoup écrit sur les timeouts d'attente SSH, mais toutes les solutions sont côté client.

EDIT: Pour l'instant, j'ai créé ce script qui fonctionne tous les soirs: count = $ (ps aux | grep [USERNAME] | wc -l) echo "Found $ count processes";

for i in $(seq $count) do echo "kill $i" kill -9 $(ps aux | grep [USERNAME] | grep -v grep | head -n 1 | tr -s ' ' | cut -f 2 -d ' ') done service ssh restart 

Vous devez replace [NOM UTILISATEUR] par l'user connecté. Cela va tuer tous les process de cet user, mais dans mon cas, il n'y a que des connections SSH en cours d'exécution pour cet user.

    Modifiez le file de configuration de votre server SSH pour y inclure

     ClientAliveInterval 600 ClientAliveCountMax 0 

    Cela déconnectera tous les clients inactifs après 10 minutes (600 secondes).

    Citation du manuel:

    ClientAliveCountMax

    Définit le nombre de messages vivants du client (voir ci-dessous) qui peuvent être envoyés sans sshd (8) recevant les messages du client. Si ce seuil est atteint alors que les messages vivants du client sont envoyés, sshd déconnectera le client, en terminant la session. […]

    La valeur par défaut est 3. Si ClientAliveInterval (voir ci-dessous) est défini sur 15, et ClientAliveCountMax est laissé par défaut, les clients SSH qui ne répondent pas seront déconnectés après environ 45 secondes. Cette option s'applique uniquement au protocole version 2.

    ClientAliveInterval

    Définit un intervalle de temporisation en secondes après quoi, si aucune donnée n'a été reçue du client, sshd (8) enverra un message via le canal crypté pour requestr une réponse du client. La valeur par défaut est 0, indiquant que ces messages ne seront pas envoyés au client. Cette option s'applique uniquement au protocole version 2.