ssh

package
v4.0.0-rc2+incompatible Latest Latest
Warning

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

Go to latest
Published: Nov 4, 2016 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

Package ssh implements a ssh client for go-git.

Index

Constants

View Source
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.

View Source
const DefaultSSHUsername = "git"

Variables

View Source
var (
	ErrInvalidAuthMethod      = errors.New("invalid ssh auth method")
	ErrAuthRequired           = errors.New("cannot connect: auth required")
	ErrNotConnected           = errors.New("not connected")
	ErrAlreadyConnected       = errors.New("already connected")
	ErrUploadPackAnswerFormat = errors.New("git-upload-pack bad answer format")
	ErrUnsupportedVCS         = errors.New("only git is supported")
	ErrUnsupportedRepo        = errors.New("only github.com is supported")
)

New errors introduced by this package.

Functions

func NewGitUploadPackService

func NewGitUploadPackService(endpoint common.Endpoint) common.GitUploadPackService

NewGitUploadPackService initialises a GitUploadPackService,

Types

type AuthMethod

type AuthMethod interface {
	common.AuthMethod
	// contains filtered or unexported methods
}

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 GitUploadPackService

type GitUploadPackService struct {
	// contains filtered or unexported fields
}

GitUploadPackService holds the service information. The zero value is safe to use.

func (*GitUploadPackService) Connect

func (s *GitUploadPackService) Connect() error

Connect connects to the SSH server, unless a AuthMethod was set with SetAuth method, by default uses an auth method based on PublicKeysCallback, it connects to a SSH agent, using the address stored in the SSH_AUTH_SOCK environment var

func (*GitUploadPackService) Disconnect

func (s *GitUploadPackService) Disconnect() (err error)

Disconnect the SSH client.

func (*GitUploadPackService) Fetch

Fetch returns a packfile for a given upload request. It opens a new SSH session on a connected GitUploadPackService, sends the given upload request to the server and returns a reader for the received packfile. Closing the returned reader will close the SSH session.

func (*GitUploadPackService) Info

func (s *GitUploadPackService) Info() (i *common.GitUploadPackInfo, err error)

Info returns the GitUploadPackInfo of the repository. The client must be connected with the repository (using the ConnectWithAuth() method) before using this method.

func (*GitUploadPackService) SetAuth

func (s *GitUploadPackService) SetAuth(auth common.AuthMethod) error

SetAuth sets the AuthMethod

type KeyboardInteractive

type KeyboardInteractive struct {
	User      string
	Challenge ssh.KeyboardInteractiveChallenge
}

KeyboardInteractive implements AuthMethod by using a prompt/response sequence controlled by the server.

func (*KeyboardInteractive) Name

func (a *KeyboardInteractive) Name() string

func (*KeyboardInteractive) String

func (a *KeyboardInteractive) String() string

type Password

type Password struct {
	User string
	Pass string
}

Password implements AuthMethod by using the given password.

func (*Password) Name

func (a *Password) Name() string

func (*Password) String

func (a *Password) String() string

type PasswordCallback

type PasswordCallback struct {
	User     string
	Callback func() (pass string, err error)
}

PasswordCallback implements AuthMethod by using a callback to fetch the password.

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
}

PublicKeys implements AuthMethod by using the given key pairs.

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)
}

PublicKeysCallback implements AuthMethod by asking a ssh.agent.Agent to act as a signer.

func NewSSHAgentAuth

func NewSSHAgentAuth(user string) (*PublicKeysCallback, error)

Opens a pipe with the ssh agent and uses the pipe as the implementer of the public key callback function.

func (*PublicKeysCallback) Name

func (a *PublicKeysCallback) Name() string

func (*PublicKeysCallback) String

func (a *PublicKeysCallback) String() string

Jump to

Keyboard shortcuts

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