Skip to main content

Add some magic to SSH and .ssh/config

Project description

PyPI version Build Status authors library users Total views Views in the last 24 hours PyPi downloads Bitdeli Badge Gitter chat

Enhances ssh_config file capabilities

NOTE: This program is called by ProxyCommand from lib-ssh.


It works transparently with :


The .ssh/config file is automatically generated, you need to update .ssh/config.advanced file instead; With new features and a better regex engine for the hostnames.

Note: Each time the script is called, it recreate a fresh new ``.ssh/config``, so be careful, backup your old .ssh/config file !

Commmand line features

Gateway chaining

ssh foo.com/bar.com

Connect to bar.com using ssh and create a proxy on bar.com to foo.com. Then connect to foo.com using the created proxy on bar.com.

ssh foo.com/bar.com/baz.com

Connect to foo.com using bar.com/baz.com which itself uses baz.com.

Configuration features

  • regex for hostnames - gw.school-..domain.net

  • aliases

  • gateways - transparent ssh connections chaining

  • includes files

  • real local command - executes a command on the local shell when connecting

  • intelligent proxycommand with fallbacks

  • inherits configuration

  • variable expansion

Config example

~/.ssh/config.advanced

# Simple example
[foo.com]
user = pacman
port = 2222

[bar]
hostname = 1.2.3.4
gateways = foo.com   # `ssh bar` will use `foo.com` as gateway

[default]
ProxyCommand = advanced-ssh-config --hostname=%h --port=%p -u

# Complete example
[foo]
user = pacman
port = 2222
hostname = foo.com

[bar]
hostname = 1.2.3.4
gateways = foo
# By running `ssh bar`, you will ssh to `bar` through a `ssh foo`

[vm-.*\.joe\.com]
IdentityFile = ~/.ssh/root-joe
gateways = direct joe.com joe.com/bar
# Will try to ssh without proxy, then fallback to joe.com proxy, then fallback to joe.com through bar
DynamicForward = 43217
LocalForward = 1723 localhost:1723
ForwardX11 = yes

[default]
Includes = ~/.ssh/config.advanced2 ~/.ssh/config.advanced3
Port = 22
User = root
IdentityFile = ~/.ssh/id_rsa
ProxyCommand = advanced-ssh-config --hostname=%h --port=%p -u
Gateways = direct
PubkeyAuthentication = yes
VisualHostKey = yes
ControlMaster = auto
ControlPath = ~/.ssh/controlmaster/%h-%p-%r.sock
EscapeChar = ~

Installation

From Pypi

# pip install advanced-ssh-config

Or by cloning

# git clone https://github.com/moul/advanced-ssh-config
# cd advanced-ssh-config
# python setup.py install

Backup your old ~/.ssh/config file

# cp ~/.ssh/config ~/.ssh/config.backup

Generate the new config file

# advanced-ssh-config -u

Or add this line manually in your ~/.ssh/config file

...
ProxyCommand = advanced-ssh-config --hostname=%h --port=%p -u
...

Tests

Install test dependencies and run tests

# python setup.py test

Pep8

# pep8 advanced_ssh_config | grep -v /tests/

Docker

Build

# docker build -t moul/advanced-ssh-config .

Run

# docker run -rm -i -t moul/advanced-ssh-config
or
# docker run -rm -i -t -v $(pwd)/:/advanced_ssh_config moul/advanced-ssh-config
or
# docker run -rm -i -t -v moul/advanced-ssh-config python setup.py test

Contributors

© 2009-2015 Manfred Touron - MIT License.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

advanced_ssh_config-0.18.0-py26-none-any.whl (24.6 kB view details)

Uploaded Python 2.6

File details

Details for the file advanced_ssh_config-0.18.0-py26-none-any.whl.

File metadata

File hashes

Hashes for advanced_ssh_config-0.18.0-py26-none-any.whl
Algorithm Hash digest
SHA256 747394a74cd479495ec643f12589c373a5404a71f8953095413650a71d67de33
MD5 4416e4a392a64cb66b2c91824e67f94b
BLAKE2b-256 eaf3d9ec3b2d35859d493a237450c5259aa9adb7175262d7435528ed2cd37b68

See more details on using hashes here.

File details

Details for the file advanced-ssh-config-0.18.0.macosx-10.10-intel.tar.gz.

File metadata

File hashes

Hashes for advanced-ssh-config-0.18.0.macosx-10.10-intel.tar.gz
Algorithm Hash digest
SHA256 c7387a8108963fea0467232360de6cc1e7555eff50ae3f8de8f2d01bbc776119
MD5 9bbd1a148fa83eca74458c31b8cce56b
BLAKE2b-256 d4f4c14ab5e3e59ec58fc5b6cfa6d4cd26472c5f3d273a79394c2036cede8ccf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page