From 8fab2179df03b782294d6da3be83aba49d789556 Mon Sep 17 00:00:00 2001 From: Spike Curtis Date: Thu, 22 Jun 2023 07:03:33 +0000 Subject: [PATCH] chore: log ssh connection disconnects with errors Signed-off-by: Spike Curtis --- agent/agentssh/agentssh.go | 18 ++++++++++++------ go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/agent/agentssh/agentssh.go b/agent/agentssh/agentssh.go index 3cf7bec3b02c8..62470b9dc11c6 100644 --- a/agent/agentssh/agentssh.go +++ b/agent/agentssh/agentssh.go @@ -111,10 +111,19 @@ func NewServer(ctx context.Context, logger slog.Logger, prometheusRegistry *prom "direct-streamlocal@openssh.com": directStreamLocalHandler, "session": ssh.DefaultSessionHandler, }, - ConnectionFailedCallback: func(_ net.Conn, err error) { - s.logger.Warn(ctx, "ssh connection failed", slog.Error(err)) + ConnectionFailedCallback: func(conn net.Conn, err error) { + s.logger.Warn(ctx, "ssh connection failed", + slog.F("remote_addr", conn.RemoteAddr()), + slog.F("local_addr", conn.LocalAddr()), + slog.Error(err)) metrics.failedConnectionsTotal.Add(1) }, + ConnectionCompleteCallback: func(conn *gossh.ServerConn, err error) { + s.logger.Info(ctx, "ssh connection complete", + slog.F("remote_addr", conn.RemoteAddr()), + slog.F("local_addr", conn.LocalAddr()), + slog.Error(err)) + }, Handler: s.sessionHandler, HostSigners: []ssh.Signer{randomSigner}, LocalPortForwardingCallback: func(ctx ssh.Context, destinationHost string, destinationPort uint32) bool { @@ -603,10 +612,7 @@ func (s *Server) handleConn(l net.Listener, c net.Conn) { } defer s.trackConn(l, c, false) logger.Info(context.Background(), "started serving connection") - defer func() { - logger.Info(context.Background(), "stopped serving connection") - }() - + // note: srv.ConnectionCompleteCallback logs completion of the connection s.srv.HandleConn(c) } diff --git a/go.mod b/go.mod index 80bc7fbfdd6a8..8edb0b87ba261 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,7 @@ replace tailscale.com => github.com/coder/tailscale v0.0.0-20230522123520-747122 // repo as tailscale.com/tempfork/gliderlabs/ssh, however, we can't replace the // subpath and it includes changes to golang.org/x/crypto/ssh as well which // makes importing it directly a bit messy. -replace github.com/gliderlabs/ssh => github.com/coder/ssh v0.0.0-20230615124436-fc6e4b009688 +replace github.com/gliderlabs/ssh => github.com/coder/ssh v0.0.0-20230621095435-9a7e23486f1c // Waiting on https://github.com/imulab/go-scim/pull/95 to merge. replace github.com/imulab/go-scim/pkg/v2 => github.com/coder/go-scim/pkg/v2 v2.0.0-20230221055123-1d63c1222136 diff --git a/go.sum b/go.sum index a12addf6ac58f..571a2c27a096e 100644 --- a/go.sum +++ b/go.sum @@ -187,8 +187,8 @@ github.com/coder/go-scim/pkg/v2 v2.0.0-20230221055123-1d63c1222136 h1:0RgB61LcNs github.com/coder/go-scim/pkg/v2 v2.0.0-20230221055123-1d63c1222136/go.mod h1:VkD1P761nykiq75dz+4iFqIQIZka189tx1BQLOp0Skc= github.com/coder/retry v1.4.0 h1:g0fojHFxcdgM3sBULqgjFDxw1UIvaCqk4ngUDu0EWag= github.com/coder/retry v1.4.0/go.mod h1:blHMk9vs6LkoRT9ZHyuZo360cufXEhrxqvEzeMtRGoY= -github.com/coder/ssh v0.0.0-20230615124436-fc6e4b009688 h1:udcMVKmo37Jv6Nq+Z2gCsDcF5F6zDvwArRGgUdVFD8s= -github.com/coder/ssh v0.0.0-20230615124436-fc6e4b009688/go.mod h1:aGQbuCLyhRLMzZF067xc84Lh7JDs1FKwCmF1Crl9dxQ= +github.com/coder/ssh v0.0.0-20230621095435-9a7e23486f1c h1:TI7TzdFI0UvQmwgyQhtI1HeyYNRxAQpr8Tw/rjT8VSA= +github.com/coder/ssh v0.0.0-20230621095435-9a7e23486f1c/go.mod h1:aGQbuCLyhRLMzZF067xc84Lh7JDs1FKwCmF1Crl9dxQ= github.com/coder/tailscale v0.0.0-20230522123520-74712221d00f h1:F0Xr1d8h8dAHn7tab1HXuzYFkcjmCydnEfdMbkOhlVk= github.com/coder/tailscale v0.0.0-20230522123520-74712221d00f/go.mod h1:jpg+77g19FpXL43U1VoIqoSg1K/Vh5CVxycGldQ8KhA= github.com/coder/terraform-provider-coder v0.8.2 h1:EPhkdpsNd8fcg6eqpAQr+W1eRrEAMtugoqujoTK4O6o=