Documentation
¶
Overview ¶
Package ssh implements the SSH communicator. Plugin maintainers should not import this package directly, instead using the tooling in the "packer-plugin-sdk/communicator" module.
Index ¶
- Variables
- func BastionConnectFunc(bProto string, bAddr string, bConf *ssh.ClientConfig, proto string, ...) func() (net.Conn, error)
- func ConnectFunc(network, addr string) func() (net.Conn, error)
- func KeyboardInteractive(c io.ReadWriter) ssh.KeyboardInteractiveChallenge
- func New(address string, config *Config) (result *comm, err error)
- func PasswordKeyboardInteractive(password string) ssh.KeyboardInteractiveChallenge
- func ProxyConnectFunc(socksProxy string, socksAuth *proxy.Auth, network, addr string) func() (net.Conn, error)
- func ProxyServe(l net.Listener, done <-chan struct{}, dialer func() (net.Conn, error))
- type Config
- type TunnelDirection
- type TunnelSpec
Constants ¶
This section is empty.
Variables ¶
var ErrHandshakeTimeout = fmt.Errorf("Timeout during SSH handshake")
ErrHandshakeTimeout is returned from New() whenever we're unable to establish an ssh connection within a certain timeframe. By default the handshake time- out period is 1 minute. You can change it with Config.HandshakeTimeout.
Functions ¶
func BastionConnectFunc ¶
func BastionConnectFunc( bProto string, bAddr string, bConf *ssh.ClientConfig, proto string, addr string) func() (net.Conn, error)
BastionConnectFunc is a convenience method for returning a function that connects to a host over a bastion connection.
func ConnectFunc ¶
ConnectFunc is a convenience method for returning a function that just uses net.Dial to communicate with the remote end that is suitable for use with the SSH communicator configuration.
func KeyboardInteractive ¶
func KeyboardInteractive(c io.ReadWriter) ssh.KeyboardInteractiveChallenge
func New ¶
Creates a new packersdk.Communicator implementation over SSH. This takes an already existing TCP connection and SSH configuration.
func PasswordKeyboardInteractive ¶
func PasswordKeyboardInteractive(password string) ssh.KeyboardInteractiveChallenge
An implementation of ssh.KeyboardInteractiveChallenge that simply sends back the password for all questions. The questions are logged.
Types ¶
type Config ¶
type Config struct {
// The configuration of the Go SSH connection
SSHConfig *ssh.ClientConfig
// Connection returns a new connection. The current connection
// in use will be closed as part of the Close method, or in the
// case an error occurs.
Connection func() (net.Conn, error)
// Pty, if true, will request a pty from the remote end.
Pty bool
// DisableAgentForwarding, if true, will not forward the SSH agent.
DisableAgentForwarding bool
// HandshakeTimeout limits the amount of time we'll wait to handshake before
// saying the connection failed.
HandshakeTimeout time.Duration
// UseSftp, if true, sftp will be used instead of scp for file transfers
UseSftp bool
// KeepAliveInterval sets how often we send a channel request to the
// server. A value < 0 disables.
KeepAliveInterval time.Duration
// Timeout is how long to wait for a read or write to succeed.
Timeout time.Duration
Tunnels []TunnelSpec
}
Config is the structure used to configure the SSH communicator.
type TunnelDirection ¶
type TunnelDirection int
TunnelDirection is the supported tunnel directions
const ( UnsetTunnel TunnelDirection = iota RemoteTunnel LocalTunnel )
type TunnelSpec ¶
type TunnelSpec struct {
Direction TunnelDirection
ListenType string
ListenAddr string
ForwardType string
ForwardAddr string
}
TunnelSpec represents a request to map a port on one side of the SSH connection to the other