Skip to content

Commit e738123

Browse files
authored
chore: log ssh connection disconnects with errors (coder#8143)
Signed-off-by: Spike Curtis <spike@coder.com>
1 parent 1b0124e commit e738123

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

agent/agentssh/agentssh.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,19 @@ func NewServer(ctx context.Context, logger slog.Logger, prometheusRegistry *prom
111111
"direct-streamlocal@openssh.com": directStreamLocalHandler,
112112
"session": ssh.DefaultSessionHandler,
113113
},
114-
ConnectionFailedCallback: func(_ net.Conn, err error) {
115-
s.logger.Warn(ctx, "ssh connection failed", slog.Error(err))
114+
ConnectionFailedCallback: func(conn net.Conn, err error) {
115+
s.logger.Warn(ctx, "ssh connection failed",
116+
slog.F("remote_addr", conn.RemoteAddr()),
117+
slog.F("local_addr", conn.LocalAddr()),
118+
slog.Error(err))
116119
metrics.failedConnectionsTotal.Add(1)
117120
},
121+
ConnectionCompleteCallback: func(conn *gossh.ServerConn, err error) {
122+
s.logger.Info(ctx, "ssh connection complete",
123+
slog.F("remote_addr", conn.RemoteAddr()),
124+
slog.F("local_addr", conn.LocalAddr()),
125+
slog.Error(err))
126+
},
118127
Handler: s.sessionHandler,
119128
HostSigners: []ssh.Signer{randomSigner},
120129
LocalPortForwardingCallback: func(ctx ssh.Context, destinationHost string, destinationPort uint32) bool {
@@ -603,10 +612,7 @@ func (s *Server) handleConn(l net.Listener, c net.Conn) {
603612
}
604613
defer s.trackConn(l, c, false)
605614
logger.Info(context.Background(), "started serving connection")
606-
defer func() {
607-
logger.Info(context.Background(), "stopped serving connection")
608-
}()
609-
615+
// note: srv.ConnectionCompleteCallback logs completion of the connection
610616
s.srv.HandleConn(c)
611617
}
612618

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ replace tailscale.com => github.com/coder/tailscale v0.0.0-20230522123520-747122
4545
// repo as tailscale.com/tempfork/gliderlabs/ssh, however, we can't replace the
4646
// subpath and it includes changes to golang.org/x/crypto/ssh as well which
4747
// makes importing it directly a bit messy.
48-
replace github.com/gliderlabs/ssh => github.com/coder/ssh v0.0.0-20230615124436-fc6e4b009688
48+
replace github.com/gliderlabs/ssh => github.com/coder/ssh v0.0.0-20230621095435-9a7e23486f1c
4949

5050
// Waiting on https://github.com/imulab/go-scim/pull/95 to merge.
5151
replace github.com/imulab/go-scim/pkg/v2 => github.com/coder/go-scim/pkg/v2 v2.0.0-20230221055123-1d63c1222136

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,8 @@ github.com/coder/go-scim/pkg/v2 v2.0.0-20230221055123-1d63c1222136 h1:0RgB61LcNs
187187
github.com/coder/go-scim/pkg/v2 v2.0.0-20230221055123-1d63c1222136/go.mod h1:VkD1P761nykiq75dz+4iFqIQIZka189tx1BQLOp0Skc=
188188
github.com/coder/retry v1.4.0 h1:g0fojHFxcdgM3sBULqgjFDxw1UIvaCqk4ngUDu0EWag=
189189
github.com/coder/retry v1.4.0/go.mod h1:blHMk9vs6LkoRT9ZHyuZo360cufXEhrxqvEzeMtRGoY=
190-
github.com/coder/ssh v0.0.0-20230615124436-fc6e4b009688 h1:udcMVKmo37Jv6Nq+Z2gCsDcF5F6zDvwArRGgUdVFD8s=
191-
github.com/coder/ssh v0.0.0-20230615124436-fc6e4b009688/go.mod h1:aGQbuCLyhRLMzZF067xc84Lh7JDs1FKwCmF1Crl9dxQ=
190+
github.com/coder/ssh v0.0.0-20230621095435-9a7e23486f1c h1:TI7TzdFI0UvQmwgyQhtI1HeyYNRxAQpr8Tw/rjT8VSA=
191+
github.com/coder/ssh v0.0.0-20230621095435-9a7e23486f1c/go.mod h1:aGQbuCLyhRLMzZF067xc84Lh7JDs1FKwCmF1Crl9dxQ=
192192
github.com/coder/tailscale v0.0.0-20230522123520-74712221d00f h1:F0Xr1d8h8dAHn7tab1HXuzYFkcjmCydnEfdMbkOhlVk=
193193
github.com/coder/tailscale v0.0.0-20230522123520-74712221d00f/go.mod h1:jpg+77g19FpXL43U1VoIqoSg1K/Vh5CVxycGldQ8KhA=
194194
github.com/coder/terraform-provider-coder v0.8.2 h1:EPhkdpsNd8fcg6eqpAQr+W1eRrEAMtugoqujoTK4O6o=

0 commit comments

Comments
 (0)