Skip to content

Commit 1c8f564

Browse files
authored
feat: add logging of ssh connections to agent (#8096)
* feat: adds logging of ssh connections to agent Signed-off-by: Spike Curtis <spike@coder.com> * code review improvements Signed-off-by: Spike Curtis <spike@coder.com> --------- Signed-off-by: Spike Curtis <spike@coder.com>
1 parent 4a431b6 commit 1c8f564

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

agent/agentssh/agentssh.go

+24-7
Original file line numberDiff line numberDiff line change
@@ -180,21 +180,24 @@ func (s *Server) ConnStats() ConnStats {
180180
}
181181

182182
func (s *Server) sessionHandler(session ssh.Session) {
183+
logger := s.logger.With(slog.F("remote_addr", session.RemoteAddr()), slog.F("local_addr", session.LocalAddr()))
184+
logger.Info(session.Context(), "handling ssh session")
185+
ctx := session.Context()
183186
if !s.trackSession(session, true) {
184187
// See (*Server).Close() for why we call Close instead of Exit.
185188
_ = session.Close()
189+
logger.Info(ctx, "unable to accept new session, server is closing")
186190
return
187191
}
188192
defer s.trackSession(session, false)
189193

190-
ctx := session.Context()
191-
192194
extraEnv := make([]string, 0)
193195
x11, hasX11 := session.X11()
194196
if hasX11 {
195197
handled := s.x11Handler(session.Context(), x11)
196198
if !handled {
197199
_ = session.Exit(1)
200+
logger.Error(ctx, "x11 handler failed")
198201
return
199202
}
200203
extraEnv = append(extraEnv, fmt.Sprintf("DISPLAY=:%d.0", x11.ScreenNumber))
@@ -206,25 +209,26 @@ func (s *Server) sessionHandler(session ssh.Session) {
206209
s.sftpHandler(session)
207210
return
208211
default:
209-
s.logger.Debug(ctx, "unsupported subsystem", slog.F("subsystem", ss))
212+
logger.Warn(ctx, "unsupported subsystem", slog.F("subsystem", ss))
210213
_ = session.Exit(1)
211214
return
212215
}
213216

214217
err := s.sessionStart(session, extraEnv)
215218
var exitError *exec.ExitError
216219
if xerrors.As(err, &exitError) {
217-
s.logger.Warn(ctx, "ssh session returned", slog.Error(exitError))
220+
logger.Info(ctx, "ssh session returned", slog.Error(exitError))
218221
_ = session.Exit(exitError.ExitCode())
219222
return
220223
}
221224
if err != nil {
222-
s.logger.Warn(ctx, "ssh session failed", slog.Error(err))
225+
logger.Warn(ctx, "ssh session failed", slog.Error(err))
223226
// This exit code is designed to be unlikely to be confused for a legit exit code
224227
// from the process.
225228
_ = session.Exit(MagicSessionErrorCode)
226229
return
227230
}
231+
logger.Info(ctx, "normal ssh session exit")
228232
_ = session.Exit(0)
229233
}
230234

@@ -565,7 +569,12 @@ func (s *Server) CreateCommand(ctx context.Context, script string, env []string)
565569
return cmd, nil
566570
}
567571

568-
func (s *Server) Serve(l net.Listener) error {
572+
func (s *Server) Serve(l net.Listener) (retErr error) {
573+
s.logger.Info(context.Background(), "started serving listener", slog.F("listen_addr", l.Addr()))
574+
defer func() {
575+
s.logger.Info(context.Background(), "stopped serving listener",
576+
slog.F("listen_addr", l.Addr()), slog.Error(retErr))
577+
}()
569578
defer l.Close()
570579

571580
s.trackListener(l, true)
@@ -580,15 +589,23 @@ func (s *Server) Serve(l net.Listener) error {
580589
}
581590

582591
func (s *Server) handleConn(l net.Listener, c net.Conn) {
592+
logger := s.logger.With(
593+
slog.F("remote_addr", c.RemoteAddr()),
594+
slog.F("local_addr", c.LocalAddr()),
595+
slog.F("listen_addr", l.Addr()))
583596
defer c.Close()
584597

585598
if !s.trackConn(l, c, true) {
586599
// Server is closed or we no longer want
587600
// connections from this listener.
588-
s.logger.Debug(context.Background(), "received connection after server closed")
601+
logger.Info(context.Background(), "received connection after server closed")
589602
return
590603
}
591604
defer s.trackConn(l, c, false)
605+
logger.Info(context.Background(), "started serving connection")
606+
defer func() {
607+
logger.Info(context.Background(), "stopped serving connection")
608+
}()
592609

593610
s.srv.HandleConn(c)
594611
}

0 commit comments

Comments
 (0)