Skip to main content
Advanced SSH config
===================

|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

Release files for advanced-ssh-config 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for advanced-ssh-config 1.1.0
File Size Uploaded
advanced-ssh-config-1.1.0.tar.gz 17.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for advanced-ssh-config 1.1.0
File
advanced_ssh_config-1.1.0-py27-none-any.whl Python 2.7 none any Details
advanced_ssh_config-1.1.0-py26-none-any.whl Python 2.6 none any Details
advanced_ssh_config-1.1.0-py2.7.egg Legacy Egg format - - Details
advanced_ssh_config-1.1.0-py2.6.egg Legacy Egg format - - Details
advanced-ssh-config-1.1.0.macosx-10.10-intel.tar.gz Details

Total release size: 206.0 kB

Release files / advanced-ssh-config-1.1.0.tar.gz

Download URL advanced-ssh-config-1.1.0.tar.gz
Size 17.7 kB
Tags Source
SHA-256 checksum
How to use checksums
5bebaa3d911fbaf5848194c61059bcad62822920c42bd30751885ae1dab0ed48
BLAKE2b-256 checksum
How to use checksums
d25aae33754f3508a7273b183557ca7f43e3e9676fae0f8b7582da087eb8ca76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / advanced_ssh_config-1.1.0-py27-none-any.whl

Download URL advanced_ssh_config-1.1.0-py27-none-any.whl
Size 25.4 kB
Tags Python 2.7
SHA-256 checksum
How to use checksums
dd04849c7c2729b3bdcf10d1697339e30272dbbc924defd01750f061918f4ad1
BLAKE2b-256 checksum
How to use checksums
4309ae3ca0ae57cf2cd15c42728cb10c76d16b471a74b67b896c2336c7b174c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / advanced_ssh_config-1.1.0-py26-none-any.whl

Download URL advanced_ssh_config-1.1.0-py26-none-any.whl
Size 25.4 kB
Tags Python 2.6
SHA-256 checksum
How to use checksums
6603c0428ec4ecab002a8bc91f0fd0e641b026a6f30e163f1097da343ca58ee3
BLAKE2b-256 checksum
How to use checksums
f0b058503d405f350e2fb2c73f954847ea55b79ba4ad92a2e0cb5203ca8d49af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / advanced_ssh_config-1.1.0-py2.7.egg

Download URL advanced_ssh_config-1.1.0-py2.7.egg
Size 49.4 kB
Tags Egg
SHA-256 checksum
How to use checksums
25ae4cf6e3362e61736a7f2583df39cd3ca504608edfe9910af48334a70f7473
BLAKE2b-256 checksum
How to use checksums
0d5185e6fdc8753bc5a6c845e621f5d7fe3cd510f5f4554c0390ad74b546afdc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / advanced_ssh_config-1.1.0-py2.6.egg

Download URL advanced_ssh_config-1.1.0-py2.6.egg
Size 49.6 kB
Tags Egg
SHA-256 checksum
How to use checksums
e9687ca6c6753015b171335e1d09d86f65d91023e69e9c68e8eb06f4c98c3df6
BLAKE2b-256 checksum
How to use checksums
ade35332d13ce3827c362c7963ccc7a8f53d6e45ae7981ccd60c54614a6d59fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / advanced-ssh-config-1.1.0.macosx-10.10-intel.tar.gz

Download URL advanced-ssh-config-1.1.0.macosx-10.10-intel.tar.gz
Size 38.5 kB
Tags Source
SHA-256 checksum
How to use checksums
4eb6b901081f96e9fa7a9ae34b1794aa12f33805c64a6641cddef0f6a8c984b2
BLAKE2b-256 checksum
How to use checksums
b515aa06d0df6d06a38936d0a57b16e2bf0185e1449480d5e47aab7c7969799d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.1.0 This release

6 release files

1.0.1

6 release files

1.0.0

6 release files

0.18.0

2 release files

0.17.0

0.16.0

4 release files

0.15.1

5 release files

0.15.0

3 release files

0.14.2

3 release files

0.14.1

3 release files

0.13.1

1 release file

0.12.2

1 release file

0.12.1

1 release file

0.10.1

1 release file

0.9.2

1 release file

0.9.1

1 release file

0.7.1

1 release file

0.6.5

1 release file

0.6.4

1 release file

0.6.3

1 release file

0.6.2

1 release file

0.6.1

1 release file

0.5.4

1 release file

0.5.3

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.2

1 release file

0.3.7

1 release file

0.3.6

1 release file

0.3.5

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.2.1

1 release file

0.2.0

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page