sshutil

package
v3.2.4 Latest Latest
Warning

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

Go to latest
Published: Aug 30, 2019 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultSSHPrivateKeyFilePath = "~/.ssh/yorc.pem"

DefaultSSHPrivateKeyFilePath is the default SSH private Key file path used to connect to provisioned resources

Variables

This section is empty.

Functions

func GetKeysFromCredentialsAttribute added in v3.2.4

func GetKeysFromCredentialsAttribute(kv *api.KV, deploymentID, nodeName, instanceID, capabilityName string) (map[string]*PrivateKey, error)

GetKeysFromCredentialsAttribute returns a map of PrivateKey by analysing a given credentials attribute of a given capability

func GetKeysFromCredentialsDataType added in v3.2.4

func GetKeysFromCredentialsDataType(creds *datatypes.Credential) (map[string]*PrivateKey, error)

GetKeysFromCredentialsDataType returns a map of PrivateKey contained in a Credential datatype

func ReadPrivateKey

func ReadPrivateKey(pk string) (ssh.AuthMethod, error)

ReadPrivateKey returns an authentication method relying on private/public key pairs The argument is : - either a path to the private key file, - or the content or this private key file

func ReadSSHPrivateKey added in v3.2.4

func ReadSSHPrivateKey(pk *PrivateKey) (ssh.AuthMethod, error)

ReadSSHPrivateKey returns an authentication method relying on private/public key pairs

func ToPrivateKeyContent

func ToPrivateKeyContent(pk string) ([]byte, error)

ToPrivateKeyContent allows to convert private key content or file to byte array

Types

type Client

type Client interface {
	RunCommand(string) (string, error)
}

Client is interface allowing running command

type PrivateKey added in v3.2.4

type PrivateKey struct {
	Content []byte
	Path    string
}

PrivateKey represent a parsed ssh Private Key. Content is always set but Path is populated only if the key content was read from a filesystem path (not provided directly)

func GetDefaultKey added in v3.2.4

func GetDefaultKey() (*PrivateKey, error)

GetDefaultKey returns Yorc's default private Key

func GetPrivateKey added in v3.2.4

func GetPrivateKey(pathOrContent string) (*PrivateKey, error)

GetPrivateKey returns a parsed PrivateKey

The argument is : - either a path to the private key file, - or the content or this private key file

func SelectPrivateKeyOnName added in v3.2.4

func SelectPrivateKeyOnName(keys map[string]*PrivateKey, shouldHavePath bool) *PrivateKey

SelectPrivateKeyOnName select a PrivateKey when several keys are available.

This method is for backward compatibility when the ssh-agent is disable and only a single key can be used. The Selection algorithm is first to check a key named "0", then "yorc" and finally "default" if none of these are present then a random one is chosen.

If shouldHavePath parameter is true then only keys having a valid file path can be returned (that's mean that keys provided only with their content are ignored)

If there is no key or none of them matche the requirements then nil is returned

type SSHAgent

type SSHAgent struct {
	Socket string
	// contains filtered or unexported fields
}

SSHAgent is an SSH agent

func NewSSHAgent

func NewSSHAgent(ctx context.Context) (*SSHAgent, error)

NewSSHAgent allows to return a new SSH Agent

func (*SSHAgent) AddKey

func (sa *SSHAgent) AddKey(privateKey string, lifeTime uint32) error

AddKey allows to add a key into ssh-agent keys list

func (*SSHAgent) AddPrivateKey added in v3.2.4

func (sa *SSHAgent) AddPrivateKey(privateKey *PrivateKey, lifeTime uint32) error

AddPrivateKey allows to add a key into ssh-agent keys list

func (*SSHAgent) GetAuthMethod

func (sa *SSHAgent) GetAuthMethod() ssh.AuthMethod

GetAuthMethod returns the auth method with all agent keys

func (*SSHAgent) RemoveAllKeys

func (sa *SSHAgent) RemoveAllKeys() error

RemoveAllKeys allows to remove all keys into ssh-agent keys list

func (*SSHAgent) RemoveKey

func (sa *SSHAgent) RemoveKey(privateKey string) error

RemoveKey allows to remove a key into ssh-agent keys list

func (*SSHAgent) Stop

func (sa *SSHAgent) Stop() error

Stop allows to cleanup and stop ssh-agent process

type SSHClient

type SSHClient struct {
	Config *ssh.ClientConfig
	Host   string
	Port   int
}

SSHClient is a client SSH

func (*SSHClient) CopyFile

func (client *SSHClient) CopyFile(source io.Reader, remotePath string, permissions string) error

CopyFile allows to copy a reader over SSH with defined remote path and specific permissions CopyFile allows to copy a reader over SSH with defined remote path and specific permissions

func (*SSHClient) GetSessionWrapper

func (client *SSHClient) GetSessionWrapper() (*SSHSessionWrapper, error)

GetSessionWrapper allows to return a session wrapper in order to handle stdout/stderr for running long synchronous commands

func (*SSHClient) RunCommand

func (client *SSHClient) RunCommand(cmd string) (string, error)

RunCommand allows to run a specified command

type SSHSessionWrapper

type SSHSessionWrapper struct {
	Stdout io.Reader
	Stderr io.Reader
	// contains filtered or unexported fields
}

SSHSessionWrapper is a wrapper with a piped SSH session

func (*SSHSessionWrapper) Close

func (sw *SSHSessionWrapper) Close() error

Close closes the session

func (*SSHSessionWrapper) RequestPty

func (sw *SSHSessionWrapper) RequestPty(term string, h, w int, termmodes ssh.TerminalModes) error

RequestPty requests the association of a pty with the session on the remote host.

func (*SSHSessionWrapper) RunCommand

func (sw *SSHSessionWrapper) RunCommand(ctx context.Context, cmd string) error

RunCommand allows to run a specified command from a session wrapper in order to handle stdout/stderr during long synchronous commands stdout/stderr are retrieved asynchronously with SSHSessionWrapper.Stdout and SSHSessionWrapper.Stderr

func (*SSHSessionWrapper) Start

func (sw *SSHSessionWrapper) Start(cmd string) error

Start runs cmd on the remote host. Typically, the remote server passes cmd to the shell for interpretation. A Session only accepts one call to Run, Start or Shell.

func (*SSHSessionWrapper) StdinPipe

func (sw *SSHSessionWrapper) StdinPipe() (io.WriteCloser, error)

StdinPipe returns a pipe that will be connected to the remote command's standard input when the command starts.

Jump to

Keyboard shortcuts

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