OpenSSH server doesn't log client disconnect without SSH_MSG_DISCONNECT

Damien Miller
2024-06-01T03:23:35Z

On Fri, 31 May 2024, Opty wrote:

> > 9.3p2, 64-bit Slackware 15.0 package which uses two patches but they
> > look LogLevel-safe to me, you can check at
> >
http://ftp.slackware.com/pub/slackware/slackware64-15.0/patches/source/openssh/
>
> 9.7p1 built from source without TCP wrappers and still no 'Connection
> closed' at 'LogLevel INFO'.

You might be hitting this exit path:

diff --git a/serverloop.c b/serverloop.c
index 4eabfced6..bf45f77a2 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -266,11 +266,11 @@ process_input(struct ssh *ssh, int connection_in)
 		if (errno == EAGAIN || errno == EINTR || errno == EWOULDBLOCK)
 			return 0;
 		if (errno == EPIPE) {
-			verbose("Connection closed by %.100s port %d",
+			logit("Connection closed by %.100s port %d",
 			    ssh_remote_ipaddr(ssh), ssh_remote_port(ssh));
 			return -1;
 		}
-		verbose("Read error from remote host %s port %d: %s",
+		logit("Read error from remote host %s port %d: %s",
 		    ssh_remote_ipaddr(ssh), ssh_remote_port(ssh),
 		    strerror(errno));
 		cleanup_exit(255);