Skip to main content

a zc.buildout recipe to make on-demand ssh tunnel

Project description

mete0r.recipe.sshtunnel

a zc.buildout recipe to make on-demand ssh tunnels i.e. ssh -L, using systemd socket activation.

Requirements

Local side Remote side
systemd sshd
ssh nc

Usage example

Attention!

This package is in its planning stage. Everything can be changed at any time.

In your buildout.cfg, define a zc.recipe.deployment section:

[buildout]
parts =
   tunnel

[foo]
recipe = zc.recipe.deployment
prefix = FOO-DIR
etc-user = MY-USERNAME
user = MY-USERNAME
...

Then define a tunnel socket in the deployment:

[foo-db]
recipe = mete0r.recipe.sshtunnel
deployment = foo
socket.name = mysql.sock
ssh.process.user = MY-USERNAME
ssh.hostname = 192.168.0.2
remote.bind = 127.0.0.1:3306

On buildout run, two systemd unit files will be created:

$ ls -l ~/.config/systemd/user/
foo-db.socket
foo-db@.service

Then you can start the listening socket:

$ systemctl --user start foo-db.socket
$ systemctl --user list-sockets --all
LISTEN                         UNIT          ACTIVATES
FOO-DIR/var/run/foo/mysql.sock foo-db.socket foo-db@0.service

Test it:

$ mysql --socket=FOO-DIR/var/run/foo/mysql.sock

Enable it to persist:

$ systemctl --user enable foo-db.socket

Development environment

To setup development environment:

python setup.py virtualenv
make

Changes

0.0.1 (2016-11-10)

  • Fix service unit ‘User=’ configuration for non-root users.

0.0.0 (2016-11-10)

  • Initial release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
mete0r.recipe.sshtunnel-0.0.1.tar.gz (75.8 kB) Copy SHA256 hash SHA256 Source None Nov 10, 2016

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page