Project

shaft

0.0
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
SSH tunnels manager
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

>= 0
 Project Readme

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