Add some magic to SSH and .ssh/config
Project description
===================
|Travis| |PyPI version| |PyPI downloads| |License| |Requires.io|
|Gitter|
|ASSH logo - Advanced SSH Config logo|
Enhances ``ssh_config`` file capabilities
**NOTE**: This program is called by
`ProxyCommand <http://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts#ProxyCommand_with_Netcat>`__
from `lib-ssh <https://www.libssh.org>`__.
--------------
It works *transparently* with :
- ssh
- scp
- rsync
- git
- and even desktop applications depending on ``lib-ssh`` (for instance
`Tower <http://www.git-tower.com>`__, `Atom.io <https://atom.io>`__,
`SSH Tunnel Manager <http://projects.tynsoe.org/fr/stm/>`__)
--------------
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.
Usage
-----
.. code:: console
$ assh --help
Usage: assh [OPTIONS] COMMAND [arg...]
Commands:
build Build .ssh/config based on .ssh/config.advanced
connect <host> Open a connection to <host>
info <host> Print connection informations
init Build a .ssh/config.advanced file based on .ssh/config
generate-etc-hosts Print a /etc/hosts file of .ssh/config.advanced
stats Print statistics
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-p PORT, --port=PORT SSH port
-c CONFIG_FILE, --config=CONFIG_FILE
ssh_config file
-f, --force
-v, --verbose
-l LOG_LEVEL, --log_level=LOG_LEVEL
--dry-run
Commmand line features
----------------------
**Gateway chaining**
.. code:: bash
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``.
.. code:: bash
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**: ``gate`` -> ``gate.domain.tld``
- **gateways**: transparent ssh connections chaining
- **includes**: split configuration into multiple files, support
globbing
- **local command execution**: finally a way to execute a command
locally on connection
- **inheritance**: ``inherits = gate.domain.tld``
- **variable expansion**: ``User = $USER`` (take $USER from
environment)
- **smart proxycommand**: connect using ``netcat``, ``socat`` or custom
handler
Config example
--------------
``~/.ssh/config.advanced``
.. code:: ini
# 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
[^vm-[0-9]*\.joe\.com$]
gateways = bar # `ssh vm-42.joe.com will use `bar` as gateway which
# itself will use `foo.com` as gateway
[default]
ProxyCommand = assh --port=%p connect %h
--------------
.. code:: ini
# 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-[0-9]*\.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 ~/.ssh/configs/*/host.config
# The `Includes` directive must be in the `[default]` section
Port = 22
User = root
IdentityFile = ~/.ssh/id_rsa
ProxyCommand = assh connect %h --port=%p
Gateways = direct
PubkeyAuthentication = yes
VisualHostKey = yes
ControlMaster = auto
ControlPath = ~/.ssh/controlmaster/%h-%p-%r.sock
EscapeChar = ~
Installation
------------
Download the latest build
.. code:: console
$ curl -L https://github.com/moul/advanced-ssh-config/releases/download/v1.1.0/assh-`uname -s`-`uname -m` > /usr/local/bin/assh
$ chmod +x /usr/local/bin/assh
Using Pypi
.. code:: console
$ pip install advanced-ssh-config
Or by cloning
.. code:: console
$ git clone https://github.com/moul/advanced-ssh-config
$ cd advanced-ssh-config
$ make install
First run
---------
Automatically generate a new ``.ssh/config.advanced`` based on your
current ``.ssh/config`` file:
.. code:: console
$ assh init > ~/.ssh/config.advanced
$ assh build -f
Tests
-----
.. code:: console
$ make test
Docker
------
Build
.. code:: console
$ docker build -t moul/advanced-ssh-config .
Run
.. code:: console
$ 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
------------
- `Christo DeLange <https://github.com/dldinternet>`__
--
© 2009-2015 Manfred Touron - `MIT
License <https://github.com/moul/advanced-ssh-config/blob/master/License.txt>`__.
.. |Travis| image:: https://img.shields.io/travis/moul/advanced-ssh-config.svg
:target: https://travis-ci.org/moul/advanced-ssh-config
.. |PyPI version| image:: https://img.shields.io/pypi/v/advanced-ssh-config.svg
:target: https://pypi.python.org/pypi/advanced-ssh-config/
.. |PyPI downloads| image:: https://img.shields.io/pypi/dm/advanced-ssh-config.svg
:target:
.. |License| image:: https://img.shields.io/pypi/l/advanced-ssh-config.svg?style=flat
:target: https://github.com/moul/advanced-ssh-config/blob/develop/LICENSE.md
.. |Requires.io| image:: https://img.shields.io/requires/github/moul/advanced-ssh-config.svg
:target: https://requires.io/github/moul/advanced-ssh-config/requirements/
.. |Gitter| image:: https://img.shields.io/badge/chat-gitter-ff69b4.svg
:target: https://gitter.im/moul/advanced-ssh-config
.. |ASSH logo - Advanced SSH Config logo| image:: https://raw.githubusercontent.com/moul/advanced-ssh-config/develop/assets/assh.jpg
:target: https://github.com/moul/advanced-ssh-config
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 Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file advanced-ssh-config-1.1.0.tar.gz.
File metadata
- Download URL: advanced-ssh-config-1.1.0.tar.gz
- Upload date:
- Size: 17.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bebaa3d911fbaf5848194c61059bcad62822920c42bd30751885ae1dab0ed48
|
|
| MD5 |
c14bb1cd0bab0b3fa6c69efb5bce2e69
|
|
| BLAKE2b-256 |
d25aae33754f3508a7273b183557ca7f43e3e9676fae0f8b7582da087eb8ca76
|
File details
Details for the file advanced_ssh_config-1.1.0-py27-none-any.whl.
File metadata
- Download URL: advanced_ssh_config-1.1.0-py27-none-any.whl
- Upload date:
- Size: 25.4 kB
- Tags: Python 2.7
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd04849c7c2729b3bdcf10d1697339e30272dbbc924defd01750f061918f4ad1
|
|
| MD5 |
1edea4fc3b0d886635085fa7cbde87e5
|
|
| BLAKE2b-256 |
4309ae3ca0ae57cf2cd15c42728cb10c76d16b471a74b67b896c2336c7b174c1
|
File details
Details for the file advanced_ssh_config-1.1.0-py26-none-any.whl.
File metadata
- Download URL: advanced_ssh_config-1.1.0-py26-none-any.whl
- Upload date:
- Size: 25.4 kB
- Tags: Python 2.6
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6603c0428ec4ecab002a8bc91f0fd0e641b026a6f30e163f1097da343ca58ee3
|
|
| MD5 |
376681a9b2f5b4fb614dab7a2ceaf3e6
|
|
| BLAKE2b-256 |
f0b058503d405f350e2fb2c73f954847ea55b79ba4ad92a2e0cb5203ca8d49af
|
File details
Details for the file advanced_ssh_config-1.1.0-py2.7.egg.
File metadata
- Download URL: advanced_ssh_config-1.1.0-py2.7.egg
- Upload date:
- Size: 49.4 kB
- Tags: Egg
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25ae4cf6e3362e61736a7f2583df39cd3ca504608edfe9910af48334a70f7473
|
|
| MD5 |
11cad2471cdcde07f2cb4568f7bda955
|
|
| BLAKE2b-256 |
0d5185e6fdc8753bc5a6c845e621f5d7fe3cd510f5f4554c0390ad74b546afdc
|
File details
Details for the file advanced_ssh_config-1.1.0-py2.6.egg.
File metadata
- Download URL: advanced_ssh_config-1.1.0-py2.6.egg
- Upload date:
- Size: 49.6 kB
- Tags: Egg
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9687ca6c6753015b171335e1d09d86f65d91023e69e9c68e8eb06f4c98c3df6
|
|
| MD5 |
3462fa58d32b061b475a95dba76225ee
|
|
| BLAKE2b-256 |
ade35332d13ce3827c362c7963ccc7a8f53d6e45ae7981ccd60c54614a6d59fc
|
File details
Details for the file advanced-ssh-config-1.1.0.macosx-10.10-intel.tar.gz.
File metadata
- Download URL: advanced-ssh-config-1.1.0.macosx-10.10-intel.tar.gz
- Upload date:
- Size: 38.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4eb6b901081f96e9fa7a9ae34b1794aa12f33805c64a6641cddef0f6a8c984b2
|
|
| MD5 |
f896e4b68517ed97e61a25d34e6cb853
|
|
| BLAKE2b-256 |
b515aa06d0df6d06a38936d0a57b16e2bf0185e1449480d5e47aab7c7969799d
|