sshd deve matar imediatamente o comando / shell / session quando a conexão cair (sem tempo limite)

0

Eu tenho um servidor onde muitas conexões ssh (com um certo comando) serão tratadas. Cada conexão consome um pouco de memória, então eu pretendo fechar as sessões (e, portanto, seu shell / comando) assim que a conexão cair.

Eu já tentei no meu / etc / ssh / sshd_config

TCPKeepAlive no
ClientAliveInterval 0
ClientAliveCountMax 0

e

TCPKeepAlive yes
ClientAliveInterval 1
ClientAliveCountMax 1

Mas quando eu abro agora uma sessão "ssh user @ server sleep.py" e depois fecho via CTRL + C no lado do cliente a sessão ainda está ativa.

Minha pergunta: Por que a sessão ainda está ativa e não recebe o sinal SIGHUP? Qualquer coisa que eu possa fazer para que funcione, então o shell é fechado assim que a conexão cair?

Qual é a atualidade:

Cliente: ssh user @ server sleep.py

Servidor:

1  root       0:00 /bin/sh -c /bin/bash /etc/app/run.sh
9  root       0:00   /usr/sbin/sshd -D
36 root       0:00      sshd: git [priv]
44 git        0:00         sshd: git@notty
45 git        0:00            sh -c sleep.py

Cliente: pressionado CTRL + C (comandos sai) Servidor:

1  root       0:00 /bin/sh -c /bin/bash /etc/app/run.sh
45 git        0:00   sh -c sleep.py
9  root       0:00   /usr/sbin/sshd -D
    
por Marc J. Schmidt 17.01.2018 / 01:53

1 resposta

0

Ah, mas o processo sshd é terminado. Está apenas saindo além do processo python.

Seu problema é causado pelo fato de que python não responde ao sinal HUP por padrão. Eu escrevi:

test.sh

#!/bin/sh
sh -c ./test.py </dev/null

test.py

#!/usr/bin/python
import time
time.sleep(20)

Em seguida, executei ./test.sh & e enviei um sinal HUP para o processo test.sh. O processo test.sh terminou, mas o processo test.py permaneceu.

Seu programa python pode responder ao sinal HUP, mas você deve programá-lo para fazer isso. Confira o módulo signal .

    
por 30.01.2018 / 21:33

Tags