Documentation ¶
Overview ¶
Package ssh allows to manage SSH connections and send commands through them.
Index ¶
- func CheckPrivateSshConnection(t *testing.T, publicHost Host, privateHost Host, command string) string
- func CheckPrivateSshConnectionE(t *testing.T, publicHost Host, privateHost Host, command string) (string, error)
- func CheckSshCommand(t *testing.T, host Host, command string) string
- func CheckSshCommandE(t *testing.T, host Host, command string) (string, error)
- func CheckSshConnection(t *testing.T, host Host)
- func CheckSshConnectionE(t *testing.T, host Host) error
- func Close(t *testing.T, closeable Closeable, ignoreErrors ...string)
- func FetchContentsOfFile(t *testing.T, host Host, useSudo bool, filePath string) string
- func FetchContentsOfFileE(t *testing.T, host Host, useSudo bool, filePath string) (string, error)
- func FetchContentsOfFiles(t *testing.T, host Host, useSudo bool, filePaths ...string) map[string]string
- func FetchContentsOfFilesE(t *testing.T, host Host, useSudo bool, filePaths ...string) (map[string]string, error)
- func NoOpHostKeyCallback(hostname string, remote net.Addr, key ssh.PublicKey) error
- func ScpFileTo(t *testing.T, host Host, mode os.FileMode, remotePath, contents string)
- func ScpFileToE(t *testing.T, host Host, mode os.FileMode, remotePath, contents string) error
- type Closeable
- type Host
- type JumpHostSession
- type KeyPair
- type SshAgent
- func NewSshAgent(t *testing.T, socketDir string, socketFile string) (*SshAgent, error)
- func SshAgentWithKeyPair(t *testing.T, keyPair *KeyPair) *SshAgent
- func SshAgentWithKeyPairE(t *testing.T, keyPair *KeyPair) (*SshAgent, error)
- func SshAgentWithKeyPairs(t *testing.T, keyPairs []*KeyPair) *SshAgent
- func SshAgentWithKeyPairsE(t *testing.T, keyPairs []*KeyPair) (*SshAgent, error)
- type SshConnectionOptions
- type SshSession
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CheckPrivateSshConnection ¶
func CheckPrivateSshConnection(t *testing.T, publicHost Host, privateHost Host, command string) string
CheckPrivateSshConnection attempts to connect to privateHost (which is not addressable from the Internet) via a separate publicHost (which is addressable from the Internet) and then executes "command" on privateHost and returns its output. It is useful for checking that it's possible to SSH from a Bastion Host to a private instance.
func CheckPrivateSshConnectionE ¶
func CheckPrivateSshConnectionE(t *testing.T, publicHost Host, privateHost Host, command string) (string, error)
CheckPrivateSshConnectionE attempts to connect to privateHost (which is not addressable from the Internet) via a separate publicHost (which is addressable from the Internet) and then executes "command" on privateHost and returns its output. It is useful for checking that it's possible to SSH from a Bastion Host to a private instance.
func CheckSshCommand ¶
CheckSshCommand checks that you can connect via SSH to the given host and run the given command. Returns the stdout/stderr.
func CheckSshCommandE ¶
CheckSshCommandE checks that you can connect via SSH to the given host and run the given command. Returns the stdout/stderr.
func CheckSshConnection ¶
CheckSshConnection checks that you can connect via SSH to the given host and fail the test if the connection fails.
func CheckSshConnectionE ¶
CheckSshConnectionE checks that you can connect via SSH to the given host and return an error if the connection fails.
func FetchContentsOfFile ¶ added in v0.9.17
FetchContentsOfFile connects to the given host via SSH and fetches the contents of the file at the given filePath. If useSudo is true, then the contents will be retrieved using sudo. This method returns the contents of that file.
func FetchContentsOfFileE ¶ added in v0.9.17
FetchContentsOfFileE connects to the given host via SSH and fetches the contents of the file at the given filePath. If useSudo is true, then the contents will be retrieved using sudo. This method returns the contents of that file.
func FetchContentsOfFiles ¶ added in v0.9.17
func FetchContentsOfFiles(t *testing.T, host Host, useSudo bool, filePaths ...string) map[string]string
FetchContentsOfFiles connects to the given host via SSH and fetches the contents of the files at the given filePaths. If useSudo is true, then the contents will be retrieved using sudo. This method returns a map from file path to contents.
func FetchContentsOfFilesE ¶ added in v0.9.17
func FetchContentsOfFilesE(t *testing.T, host Host, useSudo bool, filePaths ...string) (map[string]string, error)
FetchContentsOfFilesE connects to the given host via SSH and fetches the contents of the files at the given filePaths. If useSudo is true, then the contents will be retrieved using sudo. This method returns a map from file path to contents.
func NoOpHostKeyCallback ¶
NoOpHostKeyCallback is an ssh.HostKeyCallback that does nothing. Only use this when you're sure you don't want to check the host key at all (e.g., only for testing and non-production use cases).
Types ¶
type Host ¶
type Host struct { Hostname string // host name or ip address SshUserName string // user name // set one or more authentication methods, // the first valid method will be used SshKeyPair *KeyPair // ssh key pair to use as authentication method (disabled by default) SshAgent bool // enable authentication using your existing local SSH agent (disabled by default) OverrideSshAgent *SshAgent // enable an in process `SshAgent` for connections to this host (disabled by default) }
Host is a host on AWS.
type JumpHostSession ¶
type JumpHostSession struct { JumpHostClient *ssh.Client HostVirtualConnection net.Conn HostConnection ssh.Conn }
JumpHostSession is a session with a jump host.
func (*JumpHostSession) Cleanup ¶
func (jumpHost *JumpHostSession) Cleanup(t *testing.T)
Cleanup cleans the jump host session up.
type KeyPair ¶
KeyPair is a public and private key pair that can be used for SSH access.
func GenerateRSAKeyPair ¶
GenerateRSAKeyPair generates an RSA Keypair and return the public and private keys.
type SshAgent ¶ added in v0.10.1
type SshAgent struct {
// contains filtered or unexported fields
}
func NewSshAgent ¶ added in v0.10.1
Create SSH agent, start it in background and returns control back to the main thread You should stop the agent to cleanup files afterwards by calling `defer s.Stop()`
func SshAgentWithKeyPair ¶ added in v0.10.1
Instantiates and returns an in-memory ssh agent with the given KeyPair already added You should stop the agent to cleanup files afterwards by calling `defer sshAgent.Stop()`
func SshAgentWithKeyPairE ¶ added in v0.10.1
func SshAgentWithKeyPairs ¶ added in v0.10.1
func SshAgentWithKeyPairsE ¶ added in v0.10.1
Instantiates and returns an in-memory ssh agent with the given KeyPair(s) already added You should stop the agent to cleanup files afterwards by calling `defer sshAgent.Stop()`
type SshConnectionOptions ¶
type SshConnectionOptions struct { Username string Address string Port int AuthMethods []ssh.AuthMethod Command string JumpHost *SshConnectionOptions }
SshConnectionOptions are the options for an SSH connection.
func (*SshConnectionOptions) ConnectionString ¶
func (options *SshConnectionOptions) ConnectionString() string
ConnectionString returns the connection string for an SSH connection.
type SshSession ¶
type SshSession struct { Options *SshConnectionOptions Client *ssh.Client Session *ssh.Session JumpHost *JumpHostSession Input *func(io.WriteCloser) }
SshSession is a container object for all resources created by an SSH session. The reason we need this is so that we can do a single defer in a top-level method that calls the Cleanup method to go through and ensure all of these resources are released and cleaned up.
func (*SshSession) Cleanup ¶
func (sshSession *SshSession) Cleanup(t *testing.T)
Cleanup cleans up an existing SSH session.