Documentation
¶
Overview ¶
Package ssh implements the SSH transport protocol.
Index ¶
- Constants
- Variables
- func NewClient(config *ssh.ClientConfig) transport.Transport
- func NewKnownHostsCallback(files ...string) (ssh.HostKeyCallback, error)
- func NewKnownHostsDb(files ...string) (*knownhosts.HostKeyDB, error)
- type AuthMethod
- type HostKeyCallbackHelper
- type KeyboardInteractive
- type Password
- type PasswordCallback
- type PublicKeys
- type PublicKeysCallback
Constants ¶
const ( KeyboardInteractiveName = "ssh-keyboard-interactive" PasswordName = "ssh-password" PasswordCallbackName = "ssh-password-callback" PublicKeysName = "ssh-public-keys" PublicKeysCallbackName = "ssh-public-key-callback" )
The names of the AuthMethod implementations. To be returned by the Name() method. Most git servers only allow PublicKeysName and PublicKeysCallbackName.
const DefaultPort = 22
const DefaultUsername = "git"
Variables ¶
var DefaultAuthBuilder = func(user string) (AuthMethod, error) { return NewSSHAgentAuth(user) }
DefaultAuthBuilder is the function used to create a default AuthMethod, when the user doesn't provide any.
var DefaultClient = NewClient(nil)
DefaultClient is the default SSH client.
var DefaultSSHConfig sshConfig = ssh_config.DefaultUserSettings
DefaultSSHConfig is the reader used to access parameters stored in the system's ssh_config files. If nil all the ssh_config are ignored.
Functions ¶
func NewClient ¶
func NewClient(config *ssh.ClientConfig) transport.Transport
NewClient creates a new SSH client with an optional *ssh.ClientConfig.
func NewKnownHostsCallback ¶
func NewKnownHostsCallback(files ...string) (ssh.HostKeyCallback, error)
NewKnownHostsCallback returns ssh.HostKeyCallback based on a file based on a known_hosts file. http://man.openbsd.org/sshd#SSH_KNOWN_HOSTS_FILE_FORMAT
If list of files is empty, then it will be read from the SSH_KNOWN_HOSTS environment variable, example:
/home/foo/custom_known_hosts_file:/etc/custom_known/hosts_file
If SSH_KNOWN_HOSTS is not set the following file locations will be used:
~/.ssh/known_hosts /etc/ssh/ssh_known_hosts
func NewKnownHostsDb ¶ added in v5.15.0
func NewKnownHostsDb(files ...string) (*knownhosts.HostKeyDB, error)
NewKnownHostsDb returns knownhosts.HostKeyDB based on a file based on a known_hosts file. http://man.openbsd.org/sshd#SSH_KNOWN_HOSTS_FILE_FORMAT
If list of files is empty, then it will be read from the SSH_KNOWN_HOSTS environment variable, example:
/home/foo/custom_known_hosts_file:/etc/custom_known/hosts_file
If SSH_KNOWN_HOSTS is not set the following file locations will be used:
~/.ssh/known_hosts /etc/ssh/ssh_known_hosts
Types ¶
type AuthMethod ¶
type AuthMethod interface { transport.AuthMethod // ClientConfig should return a valid ssh.ClientConfig to be used to create // a connection to the SSH server. ClientConfig() (*ssh.ClientConfig, error) }
AuthMethod is the interface all auth methods for the ssh client must implement. The clientConfig method returns the ssh client configuration needed to establish an ssh connection.
type HostKeyCallbackHelper ¶
type HostKeyCallbackHelper struct { // HostKeyCallback is the function type used for verifying server keys. // If nil, a default callback will be created using NewKnownHostsDb // without argument. HostKeyCallback ssh.HostKeyCallback // HostKeyAlgorithms is a list of supported host key algorithms that will // be used for host key verification. HostKeyAlgorithms []string // contains filtered or unexported fields }
HostKeyCallbackHelper is a helper that provides common functionality to configure HostKeyCallback and HostKeyAlgorithms into a ssh.ClientConfig.
func (*HostKeyCallbackHelper) SetHostKeyCallback ¶
func (m *HostKeyCallbackHelper) SetHostKeyCallback(cfg *ssh.ClientConfig) (*ssh.ClientConfig, error)
func (*HostKeyCallbackHelper) SetHostKeyCallbackAndAlgorithms ¶ added in v5.15.0
func (m *HostKeyCallbackHelper) SetHostKeyCallbackAndAlgorithms(cfg *ssh.ClientConfig) (*ssh.ClientConfig, error)
SetHostKeyCallbackAndAlgorithms sets the field HostKeyCallback and HostKeyAlgorithms in the given cfg. If the host key callback or algorithms is empty it is left empty. It will be handled by the dial method, falling back to knownhosts.
type KeyboardInteractive ¶
type KeyboardInteractive struct { User string Challenge ssh.KeyboardInteractiveChallenge HostKeyCallbackHelper }
KeyboardInteractive implements AuthMethod by using a prompt/response sequence controlled by the server.
func (*KeyboardInteractive) ClientConfig ¶
func (a *KeyboardInteractive) ClientConfig() (*ssh.ClientConfig, error)
func (*KeyboardInteractive) Name ¶
func (a *KeyboardInteractive) Name() string
func (*KeyboardInteractive) String ¶
func (a *KeyboardInteractive) String() string
type Password ¶
type Password struct { User string Password string HostKeyCallbackHelper }
Password implements AuthMethod by using the given password.
func (*Password) ClientConfig ¶
func (a *Password) ClientConfig() (*ssh.ClientConfig, error)
type PasswordCallback ¶
type PasswordCallback struct { User string Callback func() (pass string, err error) HostKeyCallbackHelper }
PasswordCallback implements AuthMethod by using a callback to fetch the password.
func (*PasswordCallback) ClientConfig ¶
func (a *PasswordCallback) ClientConfig() (*ssh.ClientConfig, error)
func (*PasswordCallback) Name ¶
func (a *PasswordCallback) Name() string
func (*PasswordCallback) String ¶
func (a *PasswordCallback) String() string
type PublicKeys ¶
type PublicKeys struct { User string Signer ssh.Signer HostKeyCallbackHelper }
PublicKeys implements AuthMethod by using the given key pairs.
func NewPublicKeys ¶
func NewPublicKeys(user string, pemBytes []byte, password string) (*PublicKeys, error)
NewPublicKeys returns a PublicKeys from a PEM encoded private key. An encryption password should be given if the pemBytes contains a password encrypted PEM block otherwise password should be empty. It supports RSA (PKCS#1), PKCS#8, DSA (OpenSSL), and ECDSA private keys.
func NewPublicKeysFromFile ¶
func NewPublicKeysFromFile(user, pemFile, password string) (*PublicKeys, error)
NewPublicKeysFromFile returns a PublicKeys from a file containing a PEM encoded private key. An encryption password should be given if the pemBytes contains a password encrypted PEM block otherwise password should be empty.
func (*PublicKeys) ClientConfig ¶
func (a *PublicKeys) ClientConfig() (*ssh.ClientConfig, error)
func (*PublicKeys) Name ¶
func (a *PublicKeys) Name() string
func (*PublicKeys) String ¶
func (a *PublicKeys) String() string
type PublicKeysCallback ¶
type PublicKeysCallback struct { User string Callback func() (signers []ssh.Signer, err error) HostKeyCallbackHelper }
PublicKeysCallback implements AuthMethod by asking a ssh.agent.Agent to act as a signer.
func NewSSHAgentAuth ¶
func NewSSHAgentAuth(u string) (*PublicKeysCallback, error)
NewSSHAgentAuth returns a PublicKeysCallback based on a SSH agent, it opens a pipe with the SSH agent and uses the pipe as the implementer of the public key callback function.
func (*PublicKeysCallback) ClientConfig ¶
func (a *PublicKeysCallback) ClientConfig() (*ssh.ClientConfig, error)
func (*PublicKeysCallback) Name ¶
func (a *PublicKeysCallback) Name() string
func (*PublicKeysCallback) String ¶
func (a *PublicKeysCallback) String() string