Documentation ¶
Overview ¶
Package ssh implements a ssh client for go-git.
Index ¶
- Constants
- Variables
- func NewGitUploadPackService(endpoint common.Endpoint) common.GitUploadPackService
- type AuthMethod
- type GitUploadPackService
- func (s *GitUploadPackService) Connect() error
- func (s *GitUploadPackService) Disconnect() (err error)
- func (s *GitUploadPackService) Fetch(req *common.GitUploadPackRequest) (rc io.ReadCloser, err error)
- func (s *GitUploadPackService) Info() (i *common.GitUploadPackInfo, err error)
- func (s *GitUploadPackService) SetAuth(auth common.AuthMethod) error
- 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 DefaultSSHUsername = "git"
Variables ¶
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 ¶
func (s *GitUploadPackService) Fetch(req *common.GitUploadPackRequest) (rc io.ReadCloser, err error)
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 PasswordCallback ¶
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 ¶
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 ¶
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