bugzilla-daemon at bugzilla.mindrot.org
2017-Dec-13 16:06 UTC
[Bug 2811] New: sshd does not exit after ClientAlive failure if forwarded connections are still connected
https://bugzilla.mindrot.org/show_bug.cgi?id=2811
Bug ID: 2811
Summary: sshd does not exit after ClientAlive failure if
forwarded connections are still connected
Product: Portable OpenSSH
Version: 7.6p1
Hardware: amd64
OS: Linux
Status: NEW
Severity: normal
Priority: P5
Component: ssh
Assignee: unassigned-bugs at mindrot.org
Reporter: archie at dellroad.org
The situation:
1. Server is configured with ClientAliveInterval=3 and
ClientAliveCountMax=5
2. Client machine runs "ssh -24xaTnN -i/some/keyfile ...
-oBatchMode=yes -oExitOnForwardFailure=yes -oServerAliveInterval=3
-oServerAliveCountMax=5 -Rxx:localhost:zz user at server". Note the
purpose of this SSH connection is only to setup the reverse tunnel
(there is no pty or interactive session). This ssh process is run as a
background daemon by a separate monitoring script.
3. A TCP connection is established on the reverse-forwarded port xx
from server back to client through the SSH connection, and then is idle
(no traffic).
4. Network connectivity is lost between server and client - suddenly,
no traffic can get through (so no clean shutdown of TCP connection)
5. The ssh client eventually detects the failure and exits, then is
restarted automatically (by a separate monitoring script) and retries
repeatedly.
6. However, the sshd process running on server never exits (THIS IS THE
BUG)
6. Once connectivity is restored, the client's retrying eventually
creates a successfull ssh connection, but it then fails immediately
because the old sshd process is still hanging around listening on
localhost:xx and the new connection has -oExitOnForwardFailure=yes.
So it LOOKS as if the ClientAlive* keep-alive setting on server is not
working at all...
In trying to understand this behavior, I'm guessing what's really
happening is that the ClientAlive* keep-alive setting is actually
working and does detect the lost connection, but the existence of the
established reverse-forwarded TCP connection is preventing sshd from
exiting - just like when you exit an interactive SSH session with a
still-connected forwarded TCP connection and it hangs until that
forwarded TCP session closes.
First of all - is this behavior expected?
If not - consider this a bug report.
If so - consider this a feature request, namely, it would be nice if
there were a way to configure around this.
E.g., add new options ClientKillForwardedConnectionsOnClose and
ServerKillForwardedConnectionsOnClose that mean "if the main SSH
connection dies (or completes normally), forcibly kill any forwarded
connections immediately instead of waiting for them to close.
--
You are receiving this mail because:
You are watching the assignee of the bug.
bugzilla-daemon at bugzilla.mindrot.org
2018-Jan-09 21:18 UTC
[Bug 2811] sshd does not exit after ClientAlive failure if forwarded connections are still connected
https://bugzilla.mindrot.org/show_bug.cgi?id=2811
Archie Cobbs <archie at dellroad.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |INVALID
Status|NEW |RESOLVED
--- Comment #1 from Archie Cobbs <archie at dellroad.org> ---
After further testing it turns out that things are working correctly,
so ignore this. My apologies for the mistaken bug entry.
--
You are receiving this mail because:
You are watching the assignee of the bug.
bugzilla-daemon at bugzilla.mindrot.org
2018-Apr-06 02:26 UTC
[Bug 2811] sshd does not exit after ClientAlive failure if forwarded connections are still connected
https://bugzilla.mindrot.org/show_bug.cgi?id=2811
Damien Miller <djm at mindrot.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |CLOSED
--- Comment #2 from Damien Miller <djm at mindrot.org> ---
Close all resolved bugs after release of OpenSSH 7.7.
--
You are receiving this mail because:
You are watching the assignee of the bug.