===================
|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
Metadata
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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| advanced-ssh-config-1.1.0.tar.gz | 17.7 kB | Without provenance | Details for advanced-ssh-config-1.1.0.tar.gz |
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| advanced_ssh_config-1.1.0-py27-none-any.whl | Python 2.7 | none | any | Details for advanced_ssh_config-1.1.0-py27-none-any.whl |
| advanced_ssh_config-1.1.0-py26-none-any.whl | Python 2.6 | none | any | Details for advanced_ssh_config-1.1.0-py26-none-any.whl |
| advanced_ssh_config-1.1.0-py2.7.egg | Legacy Egg format | - | - | Details for advanced_ssh_config-1.1.0-py2.7.egg |
| advanced_ssh_config-1.1.0-py2.6.egg | Legacy Egg format | - | - | Details for advanced_ssh_config-1.1.0-py2.6.egg |
| advanced-ssh-config-1.1.0.macosx-10.10-intel.tar.gz | Details for advanced-ssh-config-1.1.0.macosx-10.10-intel.tar.gz |
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 |
Security for advanced-ssh-config 1.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.