Skip to content

n0nick/shaft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shaft - right on.

 $$$$$$\  $$\   $$\  $$$$$$\  $$$$$$$$\ $$$$$$$$\
$$  __$$\ $$ |  $$ |$$  __$$\ $$  _____|\__$$  __|
$$ /  \__|$$ |  $$ |$$ /  $$ |$$ |         $$ |
\$$$$$$\  $$$$$$$$ |$$$$$$$$ |$$$$$\       $$ |
 \____$$\ $$  __$$ |$$  __$$ |$$  __|      $$ |
$$\   $$ |$$ |  $$ |$$ |  $$ |$$ |         $$ |
\$$$$$$  |$$ |  $$ |$$ |  $$ |$$ |         $$ |
 \______/ \__|  \__|\__|  \__|\__|         \__|

An SSH tunnel assistant for the command line.

Installation

As easy as:

$ gem install shaft

Usage

Your tunnel configurations need to be stored as records in a YAML formatted ~/.shaft file.

See 'Configuration' for instructions on how to format these files.

  • Use shaft all to get a list of all available tunnels.
  • Use shaft active to see which tunnels are currently active.
    • You could use the --short option to get only the names of those lines (this could be useful to insert into your shell prompt. Just saying).
  • shaft start [NAME] would start the tunnel of the same name.
  • shaft stop [NAME] would stop the tunnel of the given name.

Configuration

The SSH tunnels configuration Shaft will use are all stored in a single YAML file under ~/.shaft.

Each tunnel is represented by a key defining its name, followed by an object describing all of the required parameters.

An example configuration would be:

foobar:
    port: 22
    username: user
    host: remote-host
    reverse: false
    bind:
      client-port: 9999
      host: host
      host-port: 8888

Calling Shaft with $ shaft start foobar would be equivalent to running:

  $ ssh -N -p 22 user@remote-host -L 9999:host:8888

ZSH Completions

Shaft includes a setup file for automatic completion of tunnel names if you use the ZSH shell.

To install it, you can run:

$ shaft completions >> ~/.zshrc

(Or output it to any file that your .zshrc includes). Don't forget to restart your shell!

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

About

An SSH tunnel assistant for the command line.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages