Add some magic to SSH and .ssh/config
Project description
Enhances ssh_config file capabilities
NOTE: This program is called by ProxyCommand from lib-ssh.
It works transparently with :
ssh
scp
rsync
git
and even desktop applications depending on lib-ssh (for instance Tower, Atom.io, SSH Tunnel Manager)
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for advanced_ssh_config-0.18.0-py26-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 747394a74cd479495ec643f12589c373a5404a71f8953095413650a71d67de33 |
|
MD5 | 4416e4a392a64cb66b2c91824e67f94b |
|
BLAKE2b-256 | eaf3d9ec3b2d35859d493a237450c5259aa9adb7175262d7435528ed2cd37b68 |
Hashes for advanced-ssh-config-0.18.0.macosx-10.10-intel.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7387a8108963fea0467232360de6cc1e7555eff50ae3f8de8f2d01bbc776119 |
|
MD5 | 9bbd1a148fa83eca74458c31b8cce56b |
|
BLAKE2b-256 | d4f4c14ab5e3e59ec58fc5b6cfa6d4cd26472c5f3d273a79394c2036cede8ccf |