Documentation
¶
Index ¶
- func DefaultErrorMatcher(content []byte) bool
- func DefaultPromptMatcher(line []byte) bool
- func DefaultSshClientFactory(conf SSHConf) (*ssh.Client, error)
- func MakeSessionNoTerminal(client *ssh.Client, opts ...SSHSessionOptions) (*ssh.Session, error)
- func NameResolverFactoryTunnels(dnsservers []string) func(sshBox *SSHBox) (NameResolver, error)
- func NewNameResolverSimple(servers []string) *nameResolverSimple
- func OptNameResolverFactory(nameResolverFactory NameResolverFactory) func(box *SSHBox) error
- func OptSSHClientFactory(factory SshClientFactory) func(box *SSHBox) error
- func OptSocksConf(conf *socks5.Config) func(box *SSHBox) error
- func SetLogger(newLogger *logrus.Logger)
- func WithErrorMatcher(errorMatcher func(content []byte) bool) commanderSessionOptions
- func WithPromptMatcher(promptMatcher func(line []byte) bool) commanderSessionOptions
- func WithSessionOptions(opts ...SSHSessionOptions) commanderSessionOptions
- func WithSubSystem(subsystem string) commanderSessionOptions
- type CommanderSSH
- type CommanderSession
- type DnsConfig
- type Emitter
- func (em *Emitter) EmitStopSocks()
- func (em *Emitter) EmitStopSsh()
- func (em *Emitter) EmitStopTunnels()
- func (em *Emitter) ListenersStartTunnels() []<-chan emitter.Event
- func (em *Emitter) ListenersStopSocks() []<-chan emitter.Event
- func (em *Emitter) ListenersStopSsh() []<-chan emitter.Event
- func (em *Emitter) ListenersStopTunnels() []<-chan emitter.Event
- func (em *Emitter) OffStartTunnels(events ...<-chan emitter.Event)
- func (em *Emitter) OffStopSocks(events ...<-chan emitter.Event)
- func (em *Emitter) OffStopSsh(events ...<-chan emitter.Event)
- func (em *Emitter) OffStopTunnels(events ...<-chan emitter.Event)
- func (em *Emitter) OnStartTunnels() <-chan emitter.Event
- func (em *Emitter) OnStopSocks() <-chan emitter.Event
- func (em *Emitter) OnStopSsh() <-chan emitter.Event
- func (em *Emitter) OnStopTunnels() <-chan emitter.Event
- func (em *Emitter) ToError(evt emitter.Event) error
- type ErrLoad
- type GatewayInfo
- type Gateways
- type InteractiveSSH
- func (c *InteractiveSSH) Interactive(sessOpts ...SSHSessionOptions) error
- func (c *InteractiveSSH) InteractiveSession(commands []string, terminalRequest TTYRequest, sessOpts ...SSHSessionOptions) error
- func (c *InteractiveSSH) InteractiveSessionSubSystem(subsystem string, terminalRequest TTYRequest, sessOpts ...SSHSessionOptions) error
- func (c *InteractiveSSH) InteractiveSubSystem(subsystem string, sessOpts ...SSHSessionOptions) error
- func (c *InteractiveSSH) RunCmd(cmd []string, sessOpts ...SSHSessionOptions) error
- func (c *InteractiveSSH) Stop() error
- type NameResolver
- type NameResolverFactory
- type PublicKeys
- type SSHBox
- func (t SSHBox) Emitter() *Emitter
- func (t *SSHBox) HandleRTunnelClient(client net.Conn, target *TunnelTarget)
- func (t *SSHBox) HandleTunnelClient(client net.Conn, target *TunnelTarget)
- func (t *SSHBox) SSHClient() *ssh.Client
- func (t *SSHBox) SetNameResolverFactory(nrf NameResolverFactory)
- func (t *SSHBox) StartSocksServer(port int, network string) error
- func (t *SSHBox) StartTunnels(tunnelTargets []*TunnelTarget) error
- func (t *SSHBox) StopSSH()
- func (t *SSHBox) StopSocksServer()
- func (t *SSHBox) StopTunnelsServer()
- type SSHBoxOptions
- type SSHConf
- type SSHSessionOptions
- type SshClientFactory
- type TTYRequest
- type TerminalError
- type TunnelTarget
- type TunnelTargets
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultErrorMatcher ¶ added in v0.4.1
func DefaultPromptMatcher ¶ added in v0.4.1
func MakeSessionNoTerminal ¶ added in v0.4.0
func NameResolverFactoryTunnels ¶ added in v0.1.4
func NameResolverFactoryTunnels(dnsservers []string) func(sshBox *SSHBox) (NameResolver, error)
func NewNameResolverSimple ¶
func NewNameResolverSimple(servers []string) *nameResolverSimple
func OptNameResolverFactory ¶
func OptNameResolverFactory(nameResolverFactory NameResolverFactory) func(box *SSHBox) error
func OptSSHClientFactory ¶
func OptSSHClientFactory(factory SshClientFactory) func(box *SSHBox) error
func OptSocksConf ¶
func WithErrorMatcher ¶ added in v0.5.0
WithErrorMatcher option to set the error matcher
func WithPromptMatcher ¶ added in v0.5.0
WithErrorMatcher option to set the prompt matcher
func WithSessionOptions ¶ added in v0.5.0
func WithSessionOptions(opts ...SSHSessionOptions) commanderSessionOptions
WithSessionOptions option to add options to the session
func WithSubSystem ¶ added in v0.5.0
func WithSubSystem(subsystem string) commanderSessionOptions
WithSubSystem option to use subsystem instead of shell
Types ¶
type CommanderSSH ¶ added in v0.4.0
type CommanderSSH struct {
// contains filtered or unexported fields
}
CommanderSSH let you run commands on a remote host and getting the output back It will create a session each time a command is run which mean that context is not persisted between commands
func NewCommanderSSH ¶ added in v0.4.0
func NewCommanderSSH(sshBox *SSHBox) *CommanderSSH
func (*CommanderSSH) CombinedOutput ¶ added in v0.4.0
func (c *CommanderSSH) CombinedOutput(cmd string, opts ...SSHSessionOptions) ([]byte, error)
func (*CommanderSSH) Run ¶ added in v0.4.0
func (c *CommanderSSH) Run(cmd string, opts ...SSHSessionOptions) (stdout []byte, stderr []byte, err error)
type CommanderSession ¶ added in v0.4.0
type CommanderSession struct {
// contains filtered or unexported fields
}
CommanderSession let you run multiple commands on a remote host and getting the output back on a single session which means that context is persisted between commands but output is buffered and split by a promptMatcher which is often the prompt
func NewCommanderSession ¶ added in v0.4.0
func NewCommanderSession(client *ssh.Client, opts ...commanderSessionOptions) (*CommanderSession, error)
NewCommanderSession creates a new commander session
func (*CommanderSession) Close ¶ added in v0.4.0
func (c *CommanderSession) Close() error
func (*CommanderSession) Run ¶ added in v0.4.0
func (c *CommanderSession) Run(cmd string) ([]byte, error)
func (*CommanderSession) SetMatcher ¶ added in v0.4.0
func (c *CommanderSession) SetMatcher(matcher func(line []byte) bool)
type DnsConfig ¶
type DnsConfig struct { Servers []string // servers to use Search []string // suffixes to append to local name Ndots int // number of dots in name to trigger absolute lookup Timeout int // seconds before giving up on packet Attempts int // lost packets before giving up on server Rotate bool // round robin among servers UnknownOpt bool // anything unknown was encountered Lookup []string // OpenBSD top-level database "lookup" order Err error // any error that occurs during open of resolv.conf }
func DnsConfFromSSH ¶
type Emitter ¶
type Emitter struct {
// contains filtered or unexported fields
}
func NewEmitter ¶
func NewEmitter() *Emitter
func (*Emitter) EmitStopSocks ¶
func (em *Emitter) EmitStopSocks()
func (*Emitter) EmitStopSsh ¶
func (em *Emitter) EmitStopSsh()
func (*Emitter) EmitStopTunnels ¶
func (em *Emitter) EmitStopTunnels()
func (*Emitter) ListenersStartTunnels ¶
func (*Emitter) ListenersStopSocks ¶
func (*Emitter) ListenersStopSsh ¶
func (*Emitter) ListenersStopTunnels ¶
func (*Emitter) OffStartTunnels ¶
func (*Emitter) OffStopSocks ¶
func (*Emitter) OffStopSsh ¶
func (*Emitter) OffStopTunnels ¶
func (*Emitter) OnStartTunnels ¶
func (*Emitter) OnStopSocks ¶
func (*Emitter) OnStopTunnels ¶
type GatewayInfo ¶
type Gateways ¶
type Gateways struct {
// contains filtered or unexported fields
}
func NewGateways ¶
type InteractiveSSH ¶
type InteractiveSSH struct {
// contains filtered or unexported fields
}
func NewInteractiveSSH ¶
func NewInteractiveSSH(sshBox *SSHBox) *InteractiveSSH
func (*InteractiveSSH) Interactive ¶
func (c *InteractiveSSH) Interactive(sessOpts ...SSHSessionOptions) error
func (*InteractiveSSH) InteractiveSession ¶
func (c *InteractiveSSH) InteractiveSession(commands []string, terminalRequest TTYRequest, sessOpts ...SSHSessionOptions) error
func (*InteractiveSSH) InteractiveSessionSubSystem ¶ added in v0.5.0
func (c *InteractiveSSH) InteractiveSessionSubSystem(subsystem string, terminalRequest TTYRequest, sessOpts ...SSHSessionOptions) error
func (*InteractiveSSH) InteractiveSubSystem ¶ added in v0.5.0
func (c *InteractiveSSH) InteractiveSubSystem(subsystem string, sessOpts ...SSHSessionOptions) error
func (*InteractiveSSH) RunCmd ¶
func (c *InteractiveSSH) RunCmd(cmd []string, sessOpts ...SSHSessionOptions) error
func (*InteractiveSSH) Stop ¶
func (c *InteractiveSSH) Stop() error
type NameResolver ¶
type NameResolver interface {
Resolve(ctx netctx.Context, name string) (context.Context, net.IP, error)
}
func NameResolverFactorySSH ¶
func NameResolverFactorySSH(sshBox *SSHBox) (NameResolver, error)
type NameResolverFactory ¶
type NameResolverFactory func(sshBox *SSHBox) (NameResolver, error)
type PublicKeys ¶
PublicKeys implements AuthMethod by using the given key pairs.
func NewPublicKeys ¶
func NewPublicKeys(pemBytes []byte, passphrase string) (*PublicKeys, error)
func NewPublicKeysFromFile ¶
func NewPublicKeysFromFile(pemFile, passphrase string) (*PublicKeys, error)
type SSHBox ¶
type SSHBox struct {
// contains filtered or unexported fields
}
func (*SSHBox) HandleRTunnelClient ¶ added in v0.1.2
func (t *SSHBox) HandleRTunnelClient(client net.Conn, target *TunnelTarget)
func (*SSHBox) HandleTunnelClient ¶ added in v0.1.2
func (t *SSHBox) HandleTunnelClient(client net.Conn, target *TunnelTarget)
func (*SSHBox) SetNameResolverFactory ¶ added in v0.1.3
func (t *SSHBox) SetNameResolverFactory(nrf NameResolverFactory)
func (*SSHBox) StartTunnels ¶
func (t *SSHBox) StartTunnels(tunnelTargets []*TunnelTarget) error
func (*SSHBox) StopSocksServer ¶
func (t *SSHBox) StopSocksServer()
func (*SSHBox) StopTunnelsServer ¶
func (t *SSHBox) StopTunnelsServer()
type SSHBoxOptions ¶
type SSHConf ¶
type SSHConf struct { Host string User string Password string PrivateKey string Passphrase string HostKeyFingerprint string SSHAuthSock *string NoSSHAgent bool }
func (*SSHConf) CheckAndFill ¶
type SSHSessionOptions ¶ added in v0.4.0
type TTYRequest ¶
type TTYRequest int
const ( RequestTTYAuto TTYRequest = iota RequestTTYNo RequestTTYYes RequestTTYForce )
type TerminalError ¶ added in v0.4.1
type TerminalError struct {
// contains filtered or unexported fields
}
func IsTerminalError ¶ added in v0.4.1
func IsTerminalError(err error) (*TerminalError, bool)
func (TerminalError) Error ¶ added in v0.4.1
func (e TerminalError) Error() string
type TunnelTarget ¶
type TunnelTarget struct { Network string RemoteHost string RemotePort int LocalPort int Reverse bool }
func DNSServerToTunnel ¶
func DNSServerToTunnel(dnsservers []string) ([]*TunnelTarget, error)
func (*TunnelTarget) CheckAndFill ¶
func (c *TunnelTarget) CheckAndFill() error
func (TunnelTarget) String ¶ added in v0.2.0
func (c TunnelTarget) String() string
type TunnelTargets ¶
type TunnelTargets []*TunnelTarget