code: func applyConnMetadata(ctx Context, conn gossh.ConnMetadata) {
  	if ctx.Value(ContextKeySessionID) != nil {
  		return
  	}
  	ctx.SetValue(ContextKeySessionID, hex.EncodeToString(conn.SessionID()))
  	ctx.SetValue(ContextKeyClientVersion, string(conn.ClientVersion()))
  	ctx.SetValue(ContextKeyServerVersion, string(conn.ServerVersion()))
  	ctx.SetValue(ContextKeyUser, conn.User())
  	ctx.SetValue(ContextKeyLocalAddr, conn.LocalAddr())
  	ctx.SetValue(ContextKeyRemoteAddr, conn.RemoteAddr())
  }
docs: // this is separate from newContext because we will get ConnMetadata
  // at different points so it needs to be applied separately