Documentation ¶
Overview ¶
Package sshtun provides a SSH tunnel with port forwarding. By default it reads the default linux ssh private key location ($HOME/.ssh/id_rsa).
Index ¶
- type AuthType
- type ConnState
- type Endpoint
- type SSHTun
- func (tun *SSHTun) SetConnState(connStateFun func(*SSHTun, ConnState))
- func (tun *SSHTun) SetDebug(debug bool)
- func (tun *SSHTun) SetEncryptedKeyFile(file string, password string)
- func (tun *SSHTun) SetEncryptedKeyReader(reader io.Reader, password string)
- func (tun *SSHTun) SetKeyFile(file string)
- func (tun *SSHTun) SetKeyReader(reader io.Reader)
- func (tun *SSHTun) SetLocalHost(host string)
- func (tun *SSHTun) SetPassword(password string)
- func (tun *SSHTun) SetPort(port int)
- func (tun *SSHTun) SetRemoteHost(host string)
- func (tun *SSHTun) SetSSHAgent()
- func (tun *SSHTun) SetTimeout(timeout time.Duration)
- func (tun *SSHTun) SetUser(user string)
- func (tun *SSHTun) Start() error
- func (tun *SSHTun) Stop()
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AuthType ¶
type AuthType int
AuthType is the type of authentication to use for SSH.
const ( // AuthTypeKeyFile uses the keys from a SSH key file read from the system. AuthTypeKeyFile AuthType = iota // AuthTypeEncryptedKeyFile uses the keys from an encrypted SSH key file read from the system. AuthTypeEncryptedKeyFile // AuthTypeKeyReader uses the keys from a SSH key reader. AuthTypeKeyReader // AuthTypeEncryptedKeyReader uses the keys from an encrypted SSH key reader. AuthTypeEncryptedKeyReader // AuthTypePassword uses a password directly. AuthTypePassword // AuthTypeSSHAgent will use registered users in the ssh-agent. AuthTypeSSHAgent // AuthTypeAuto tries to get the authentication method automatically. See SSHTun.Start for details on // this. AuthTypeAuto )
type ConnState ¶
type ConnState int
ConnState represents the state of the SSH tunnel. It's returned to an optional function provided to SetConnState.
const ( // StateStopped represents a stopped tunnel. A call to Start will make the state to transition to StateStarting. StateStopped ConnState = iota // StateStarting represents a tunnel initializing and preparing to listen for connections. // A successful initialization will make the state to transition to StateStarted, otherwise it will transition to StateStopped. StateStarting // StateStarted represents a tunnel ready to accept connections. // A call to stop or an error will make the state to transition to StateStopped. StateStarted )
type SSHTun ¶
SSHTun represents a SSH tunnel
func New ¶
New creates a new SSH tunnel to the specified server redirecting a port on local localhost to a port on remote localhost. By default the SSH connection is made to port 22 as root and using automatic detection of the authentication method (see Start for details on this). Calling SetPassword will change the authentication to password based. Calling SetKeyFile will change the authentication to keyfile based with an optional key file. The SSH user and port can be changed with SetUser and SetPort. The local and remote hosts can be changed to something different than localhost with SetLocalHost and SetRemoteHost. The states of the tunnel can be received throgh a callback function with SetConnState.
func (*SSHTun) SetConnState ¶
SetConnState specifies an optional callback function that is called when a SSH tunnel changes state. See the ConnState type and associated constants for details.
func (*SSHTun) SetEncryptedKeyFile ¶
SetEncryptedKeyFile changes the authentication to encrypted key-based and uses the specified file and password. Leaving it empty defaults to the default linux private key location ($HOME/.ssh/id_rsa).
func (*SSHTun) SetEncryptedKeyReader ¶
SetEncryptedKeyReader changes the authentication to encrypted key-based and uses the specified reader and password. Leaving it empty defaults to the default linux private key location ($HOME/.ssh/id_rsa).
func (*SSHTun) SetKeyFile ¶
SetKeyFile changes the authentication to key-based and uses the specified file. Leaving it empty defaults to the default linux private key location ($HOME/.ssh/id_rsa).
func (*SSHTun) SetKeyReader ¶
SetKeyReader changes the authentication to key-based and uses the specified reader. Leaving it empty defaults to the default linux private key location ($HOME/.ssh/id_rsa).
func (*SSHTun) SetLocalHost ¶
SetLocalHost sets the local host to redirect (defaults to localhost)
func (*SSHTun) SetPassword ¶
SetPassword changes the authentication to password-based and uses the specified password.
func (*SSHTun) SetRemoteHost ¶
SetRemoteHost sets the remote host to redirect (defaults to localhost)
func (*SSHTun) SetSSHAgent ¶
func (tun *SSHTun) SetSSHAgent()
SetSSHAgent changes the authentication to ssh-agent.
func (*SSHTun) SetTimeout ¶
SetTimeout sets the connection timeouts (defaults to 15 seconds).
func (*SSHTun) Start ¶
Start starts the SSH tunnel. After this call, all Set* methods will have no effect until Close is called. Note on SSH authentication: in case the tunnel's authType is set to AuthTypeAuto the following will happen: The default key file will be used, if that doesn't succeed it will try to use the SSH agent. If that fails the whole authentication fails. That means if you want to use password or encrypted key file authentication, you have to specify that explicitly.