Skip to main content
deleted 138 characters in body
Source Link
MMM
  • 101
  • 3

I have a server where a lot of ssh connections (with a certain command) will be handled. Each connection consumes a bit of memory so I aim to close sessions (and thus its shell/command) as soon as the connection drops.

I already tried in my /etc/ssh/sshd_config

TCPKeepAlive no
ClientAliveInterval 0
ClientAliveCountMax 0

and

TCPKeepAlive yes
ClientAliveInterval 1
ClientAliveCountMax 1

But when I open now a session "ssh user@server", an the assigned shell (which is just a python script, configured with "command" option in AuthorizedKeys file) is in auser@server sleep (just for debugging).py" and then close via CTRL+C on the client side the session is still active.

My question: Why is the session still active and doesn't receive the SIGHUP signal? Anything I can do to make it work, so the shell is closed as soon as the connection drops?


What current happens:

Client: ssh user@server sleep.py

Server:

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

Client: pressed CTRL+C (commands exits) Server:

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

I have a server where a lot of ssh connections (with a certain command) will be handled. Each connection consumes a bit of memory so I aim to close sessions (and thus its shell/command) as soon as the connection drops.

I already tried in my /etc/ssh/sshd_config

TCPKeepAlive no
ClientAliveInterval 0
ClientAliveCountMax 0

and

TCPKeepAlive yes
ClientAliveInterval 1
ClientAliveCountMax 1

But when I open now a session "ssh user@server", an the assigned shell (which is just a python script, configured with "command" option in AuthorizedKeys file) is in a sleep (just for debugging) and then close via CTRL+C on the client side the session is still active.

My question: Why is the session still active and doesn't receive the SIGHUP signal? Anything I can do to make it work, so the shell is closed as soon as the connection drops?


What current happens:

Client: ssh user@server sleep.py

Server:

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

Client: pressed CTRL+C (commands exits) Server:

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

I have a server where a lot of ssh connections (with a certain command) will be handled. Each connection consumes a bit of memory so I aim to close sessions (and thus its shell/command) as soon as the connection drops.

I already tried in my /etc/ssh/sshd_config

TCPKeepAlive no
ClientAliveInterval 0
ClientAliveCountMax 0

and

TCPKeepAlive yes
ClientAliveInterval 1
ClientAliveCountMax 1

But when I open now a session "ssh user@server sleep.py" and then close via CTRL+C on the client side the session is still active.

My question: Why is the session still active and doesn't receive the SIGHUP signal? Anything I can do to make it work, so the shell is closed as soon as the connection drops?


What current happens:

Client: ssh user@server sleep.py

Server:

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

Client: pressed CTRL+C (commands exits) Server:

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
Source Link
MMM
  • 101
  • 3

sshd should immediately kill command/shell/session when connection drops (no timeout)

I have a server where a lot of ssh connections (with a certain command) will be handled. Each connection consumes a bit of memory so I aim to close sessions (and thus its shell/command) as soon as the connection drops.

I already tried in my /etc/ssh/sshd_config

TCPKeepAlive no
ClientAliveInterval 0
ClientAliveCountMax 0

and

TCPKeepAlive yes
ClientAliveInterval 1
ClientAliveCountMax 1

But when I open now a session "ssh user@server", an the assigned shell (which is just a python script, configured with "command" option in AuthorizedKeys file) is in a sleep (just for debugging) and then close via CTRL+C on the client side the session is still active.

My question: Why is the session still active and doesn't receive the SIGHUP signal? Anything I can do to make it work, so the shell is closed as soon as the connection drops?


What current happens:

Client: ssh user@server sleep.py

Server:

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

Client: pressed CTRL+C (commands exits) Server:

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