Help us shape the future of Go! Take the 2026 Go Developer Survey

pssh

package
v1.13.2-0...-bdd5983 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 26, 2026 License: MIT Imports: 28 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetLogger

func GetLogger(s *SSHServerConnSession) *slog.Logger

func GetUser

func GetUser(s *SSHServerConnSession) *db.User

func KeysEqual

func KeysEqual(a, b ssh.PublicKey) bool

func SessionMessage

func SessionMessage(sesh *SSHServerConnSession, msg string)

func SetLogger

func SetLogger(s *SSHServerConnSession, logger *slog.Logger)

func SetUser

func SetUser(s *SSHServerConnSession, user *db.User)

Types

type FindUserInterface

type FindUserInterface interface {
	FindUser(string) (*db.User, error)
	FindUserByPubkey(string) (*db.User, error)
}

type GetLoggerInterface

type GetLoggerInterface interface {
	GetLogger(s *SSHServerConnSession) *slog.Logger
}

type Pty

type Pty struct {
	Term   string
	Window Window
}

func (*Pty) Name

func (p *Pty) Name() string

func (*Pty) Resize

func (p *Pty) Resize(width, height int) error

type PubKeyAuthHandler

type PubKeyAuthHandler func(conn ssh.ConnMetadata, key ssh.PublicKey) (*ssh.Permissions, error)

type SSHServer

type SSHServer struct {
	Ctx        context.Context
	CancelFunc context.CancelFunc
	Logger     *slog.Logger
	Config     *SSHServerConfig
	Listener   net.Listener
	Conns      *syncmap.Map[string, *SSHServerConn]

	SessionsCreated  *prometheus.CounterVec
	SessionsFinished *prometheus.CounterVec
	SessionsDuration *prometheus.CounterVec

	Mu sync.Mutex
}

func NewSSHServer

func NewSSHServer(ctx context.Context, logger *slog.Logger, config *SSHServerConfig) *SSHServer

func NewSSHServerWithConfig

func NewSSHServerWithConfig(
	ctx context.Context,
	logger *slog.Logger,
	app, host, port, promPort, hostKey string,
	pubKeyAuthHandler PubKeyAuthHandler,
	middleware, subsystemMiddleware []SSHServerMiddleware,
	channelMiddleware map[string]SSHServerChannelMiddleware,
) (*SSHServer, error)

func (*SSHServer) Close

func (s *SSHServer) Close() error

func (*SSHServer) HandleConn

func (s *SSHServer) HandleConn(conn net.Conn) error

func (*SSHServer) ListenAndServe

func (s *SSHServer) ListenAndServe() error

type SSHServerChannelMiddleware

type SSHServerChannelMiddleware func(ssh.NewChannel, *SSHServerConn) error

type SSHServerConfig

type SSHServerConfig struct {
	*ssh.ServerConfig
	App                 string
	ListenAddr          string
	PromListenAddr      string
	Middleware          []SSHServerMiddleware
	SubsystemMiddleware []SSHServerMiddleware
	ChannelMiddleware   map[string]SSHServerChannelMiddleware
}

type SSHServerConn

type SSHServerConn struct {
	Ctx        context.Context
	CancelFunc context.CancelFunc
	Logger     *slog.Logger
	Conn       *ssh.ServerConn
	SSHServer  *SSHServer
	Start      time.Time
	// contains filtered or unexported fields
}

func NewSSHServerConn

func NewSSHServerConn(
	ctx context.Context,
	logger *slog.Logger,
	conn *ssh.ServerConn,
	server *SSHServer,
) *SSHServerConn

func (*SSHServerConn) Close

func (sc *SSHServerConn) Close() error

func (*SSHServerConn) Context

func (s *SSHServerConn) Context() context.Context

func (*SSHServerConn) Handle

func (sc *SSHServerConn) Handle(chans <-chan ssh.NewChannel, reqs <-chan *ssh.Request) error

type SSHServerConnSession

type SSHServerConnSession struct {
	ssh.Channel
	*SSHServerConn

	Ctx        context.Context
	CancelFunc context.CancelFunc
	// contains filtered or unexported fields
}

func (*SSHServerConnSession) Close

func (s *SSHServerConnSession) Close() error

func (*SSHServerConnSession) Command

func (s *SSHServerConnSession) Command() []string

func (*SSHServerConnSession) Context

func (s *SSHServerConnSession) Context() context.Context

func (*SSHServerConnSession) Deadline

func (s *SSHServerConnSession) Deadline() (deadline time.Time, ok bool)

Deadline implements context.Context.

func (*SSHServerConnSession) Done

func (s *SSHServerConnSession) Done() <-chan struct{}

Done implements context.Context.

func (*SSHServerConnSession) Err

func (s *SSHServerConnSession) Err() error

Err implements context.Context.

func (*SSHServerConnSession) Errorf

func (sesh *SSHServerConnSession) Errorf(f string, v ...interface{})

func (*SSHServerConnSession) Errorln

func (sesh *SSHServerConnSession) Errorln(v ...interface{})

func (*SSHServerConnSession) Exit

func (s *SSHServerConnSession) Exit(code int) error

func (*SSHServerConnSession) Fatal

func (s *SSHServerConnSession) Fatal(err error)

func (*SSHServerConnSession) Permissions

func (s *SSHServerConnSession) Permissions() *ssh.Permissions

func (*SSHServerConnSession) Printf

func (sesh *SSHServerConnSession) Printf(f string, v ...interface{})

func (*SSHServerConnSession) Println

func (sesh *SSHServerConnSession) Println(v ...interface{})

func (*SSHServerConnSession) Pty

func (s *SSHServerConnSession) Pty() (*Pty, <-chan Window, bool)

func (*SSHServerConnSession) PublicKey

func (s *SSHServerConnSession) PublicKey() ssh.PublicKey

func (*SSHServerConnSession) RemoteAddr

func (s *SSHServerConnSession) RemoteAddr() net.Addr

func (*SSHServerConnSession) SetValue

func (s *SSHServerConnSession) SetValue(key any, data any)

SetValue implements context.Context.

func (*SSHServerConnSession) User

func (s *SSHServerConnSession) User() string

func (*SSHServerConnSession) Value

func (s *SSHServerConnSession) Value(key any) any

Value implements context.Context.

func (*SSHServerConnSession) Write

func (s *SSHServerConnSession) Write(p []byte) (n int, err error)

Write overrides the embedded Channel's Write to normalize line endings when PTY is allocated.

type SSHServerHandler

type SSHServerHandler func(*SSHServerConnSession) error

type SSHServerMiddleware

type SSHServerMiddleware func(SSHServerHandler) SSHServerHandler

func HelpNotice

func HelpNotice(help string) SSHServerMiddleware

HelpNotice writes help to the session, translating newlines for the client's pty.

func LogMiddleware

func LogMiddleware(getLogger GetLoggerInterface, database FindUserInterface) SSHServerMiddleware

type Window

type Window struct {
	Width        int
	Height       int
	HeightPixels int
	WidthPixels  int
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL