{ "info": { "author": "Pahaz Blinov", "author_email": "pahaz.blinov@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Build Tools" ], "description": "|CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|\n\n|pyversions| |license|\n\n**Author**: `Pahaz Blinov`_\n\n**Repo**: https://github.com/pahaz/sshtunnel/\n\nInspired by https://github.com/jmagnusson/bgtunnel, but it doesn't work on\nWindows.\n\nSee also: https://github.com/paramiko/paramiko/blob/master/demos/forward.py\n\nRequirements\n-------------\n\n* `paramiko`_\n\nInstallation\n============\n\n`sshtunnel`_ is on PyPI, so simply run:\n\n::\n\n pip install sshtunnel\n\nor ::\n\n easy_install sshtunnel\n\nor ::\n\n conda install -c conda-forge sshtunnel\n\nto have it installed in your environment.\n\nFor installing from source, clone the\n`repo `_ and run::\n\n python setup.py install\n\nTesting the package\n-------------------\n\nIn order to run the tests you first need\n`tox `_ and run::\n\n python setup.py test\n\nUsage scenarios\n===============\n\nOne of the typical scenarios where ``sshtunnel`` is helpful is depicted in the\nfigure below. User may need to connect a port of a remote server (i.e. 8080)\nwhere only SSH port (usually port 22) is reachable. ::\n\n ----------------------------------------------------------------------\n\n |\n -------------+ | +----------+\n LOCAL | | | REMOTE | :22 SSH\n CLIENT | <== SSH ========> | SERVER | :8080 web service\n -------------+ | +----------+\n |\n FIREWALL (only port 22 is open)\n\n ----------------------------------------------------------------------\n\n**Fig1**: How to connect to a service blocked by a firewall through SSH tunnel.\n\n\nIf allowed by the SSH server, it is also possible to reach a private server\n(from the perspective of ``REMOTE SERVER``) not directly visible from the\noutside (``LOCAL CLIENT``'s perspective). ::\n\n ----------------------------------------------------------------------\n\n |\n -------------+ | +----------+ +---------\n LOCAL | | | REMOTE | | PRIVATE\n CLIENT | <== SSH ========> | SERVER | <== local ==> | SERVER\n -------------+ | +----------+ +---------\n |\n FIREWALL (only port 443 is open)\n\n ----------------------------------------------------------------------\n\n**Fig2**: How to connect to ``PRIVATE SERVER`` through SSH tunnel.\n\n\nUsage examples\n==============\n\nAPI allows either initializing the tunnel and starting it or using a ``with``\ncontext, which will take care of starting **and stopping** the tunnel:\n\nExample 1\n---------\n\nCode corresponding to **Fig1** above follows, given remote server's address is\n``pahaz.urfuclub.ru``, password authentication and randomly assigned local bind\nport.\n\n.. code-block:: python\n\n from sshtunnel import SSHTunnelForwarder\n\n server = SSHTunnelForwarder(\n 'pahaz.urfuclub.ru',\n ssh_username=\"pahaz\",\n ssh_password=\"secret\",\n remote_bind_address=('127.0.0.1', 8080)\n )\n\n server.start()\n\n print(server.local_bind_port) # show assigned local port\n # work with `SECRET SERVICE` through `server.local_bind_port`.\n\n server.stop()\n\nExample 2\n---------\n\nExample of a port forwarding to a private server not directly reachable,\nassuming password protected pkey authentication, remote server's SSH service is\nlistening on port 443 and that port is open in the firewall (**Fig2**):\n\n.. code-block:: python\n\n import paramiko\n import sshtunnel\n\n with sshtunnel.open_tunnel(\n (REMOTE_SERVER_IP, 443),\n ssh_username=\"\",\n ssh_pkey=\"/var/ssh/rsa_key\",\n ssh_private_key_password=\"secret\",\n remote_bind_address=(PRIVATE_SERVER_IP, 22),\n local_bind_address=('0.0.0.0', 10022)\n ) as tunnel:\n client = paramiko.SSHClient()\n client.load_system_host_keys()\n client.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n client.connect('127.0.0.1', 10022)\n # do some operations with client session\n client.close()\n\n print('FINISH!')\n\nExample 3\n---------\n\nExample of a port forwarding for the Vagrant MySQL local port:\n\n.. code-block:: python\n\n from sshtunnel import open_tunnel\n from time import sleep\n\n with open_tunnel(\n ('localhost', 2222),\n ssh_username=\"vagrant\",\n ssh_password=\"vagrant\",\n remote_bind_address=('127.0.0.1', 3306)\n ) as server:\n\n print(server.local_bind_port)\n while True:\n # press Ctrl-C for stopping\n sleep(1)\n\n print('FINISH!')\n\nOr simply using the CLI:\n\n.. code-block:: console\n\n (bash)$ python -m sshtunnel -U vagrant -P vagrant -L :3306 -R 127.0.0.1:3306 -p 2222 localhost\n\nExample 4\n---------\n\nOpening an SSH session jumping over two tunnels. SSH transport and tunnels\nwill be daemonised, which will not wait for the connections to stop at close\ntime.\n\n.. code-block:: python\n\n import sshtunnel\n from paramiko import SSHClient\n\n\n with sshtunnel.open_tunnel(\n ssh_address_or_host=('GW1_ip', 20022),\n remote_bind_address=('GW2_ip', 22),\n block_on_close=False\n ) as tunnel1:\n print('Connection to tunnel1 (GW1_ip:GW1_port) OK...')\n with sshtunnel.open_tunnel(\n ssh_address_or_host=('localhost', tunnel1.local_bind_port),\n remote_bind_address=('target_ip', 22),\n ssh_username='GW2_user',\n ssh_password='GW2_pwd',\n block_on_close=False\n ) as tunnel2:\n print('Connection to tunnel2 (GW2_ip:GW2_port) OK...')\n with SSHClient() as ssh:\n ssh.connect('localhost',\n port=tunnel2.local_bind_port,\n username='target_user',\n password='target_pwd',\n )\n ssh.exec_command(...)\n\n\nCLI usage\n=========\n\n::\n\n $ sshtunnel --help\n usage: sshtunnel [-h] [-U SSH_USERNAME] [-p SSH_PORT] [-P SSH_PASSWORD] -R\n IP:PORT [IP:PORT ...] [-L [IP:PORT [IP:PORT ...]]]\n [-k SSH_HOST_KEY] [-K KEY_FILE] [-S KEY_PASSWORD] [-t] [-v]\n [-V] [-x IP:PORT] [-c SSH_CONFIG_FILE] [-z] [-n] [-d [FOLDER [FOLDER ...]]]\n ssh_address\n\n Pure python ssh tunnel utils\n Version 0.1.5\n\n positional arguments:\n ssh_address SSH server IP address (GW for SSH tunnels)\n set with \"-- ssh_address\" if immediately after -R or -L\n\n optional arguments:\n -h, --help show this help message and exit\n -U SSH_USERNAME, --username SSH_USERNAME\n SSH server account username\n -p SSH_PORT, --server_port SSH_PORT\n SSH server TCP port (default: 22)\n -P SSH_PASSWORD, --password SSH_PASSWORD\n SSH server account password\n -R IP:PORT [IP:PORT ...], --remote_bind_address IP:PORT [IP:PORT ...]\n Remote bind address sequence: ip_1:port_1 ip_2:port_2 ... ip_n:port_n\n Equivalent to ssh -Lxxxx:IP_ADDRESS:PORT\n If port is omitted, defaults to 22.\n Example: -R 10.10.10.10: 10.10.10.10:5900\n -L [IP:PORT [IP:PORT ...]], --local_bind_address [IP:PORT [IP:PORT ...]]\n Local bind address sequence: ip_1:port_1 ip_2:port_2 ... ip_n:port_n\n Elements may also be valid UNIX socket domains:\n /tmp/foo.sock /tmp/bar.sock ... /tmp/baz.sock\n Equivalent to ssh -LPORT:xxxxxxxxx:xxxx, being the local IP address optional.\n By default it will listen in all interfaces (0.0.0.0) and choose a random port.\n Example: -L :40000\n -k SSH_HOST_KEY, --ssh_host_key SSH_HOST_KEY\n Gateway's host key\n -K KEY_FILE, --private_key_file KEY_FILE\n RSA/DSS/ECDSA private key file\n -S KEY_PASSWORD, --private_key_password KEY_PASSWORD\n RSA/DSS/ECDSA private key password\n -t, --threaded Allow concurrent connections to each tunnel\n -v, --verbose Increase output verbosity (default: ERROR)\n -V, --version Show version number and quit\n -x IP:PORT, --proxy IP:PORT\n IP and port of SSH proxy to destination\n -c SSH_CONFIG_FILE, --config SSH_CONFIG_FILE\n SSH configuration file, defaults to ~/.ssh/config\n -z, --compress Request server for compression over SSH transport\n -n, --noagent Disable looking for keys from an SSH agent\n -d [FOLDER [FOLDER ...]], --host_pkey_directories [FOLDER [FOLDER ...]]\n List of directories where SSH pkeys (in the format `id_*`) may be found\n\n.. _Pahaz Blinov: https://github.com/pahaz\n.. _sshtunnel: https://pypi.python.org/pypi/sshtunnel\n.. _paramiko: http://www.paramiko.org/\n.. |CircleCI| image:: https://circleci.com/gh/pahaz/sshtunnel.svg?style=svg\n :target: https://circleci.com/gh/pahaz/sshtunnel\n.. |AppVeyor| image:: https://ci.appveyor.com/api/projects/status/oxg1vx2ycmnw3xr9?svg=true&passingText=Windows%20-%20OK&failingText=Windows%20-%20Fail\n :target: https://ci.appveyor.com/project/pahaz/sshtunnel\n.. |readthedocs| image:: https://readthedocs.org/projects/sshtunnel/badge/?version=latest\n :target: http://sshtunnel.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n.. |coveralls| image:: https://coveralls.io/repos/github/pahaz/sshtunnel/badge.svg?branch=master\n :target: https://coveralls.io/github/pahaz/sshtunnel?branch=master\n.. |pyversions| image:: https://img.shields.io/pypi/pyversions/sshtunnel.svg\n.. |version| image:: https://img.shields.io/pypi/v/sshtunnel.svg\n :target: `sshtunnel`_\n.. |license| image:: https://img.shields.io/pypi/l/sshtunnel.svg\n :target: https://github.com/pahaz/sshtunnel/blob/master/LICENSE\n\nOnline documentation\n====================\n\nDocumentation may be found at `readthedocs`_.\n\n.. _readthedocs: https://sshtunnel.readthedocs.org/\n\nCONTRIBUTORS\n============\n\n- `Cameron Maske`_\n- `Gustavo Machado`_\n- `Colin Jermain`_\n- `JM Fern\u00e1ndez`_ - (big thanks!)\n- `Lewis Thompson`_\n- `Erik Rogers`_\n- `Mart S\u00f5mermaa`_\n- `Chronial`_\n- `Dan Harbin`_\n- `Ignacio Peluffo`_\n- `Niels Zeilemaker`_\n\nCHANGELOG\n=========\n\n- v.0.1.5 (`JM Fern\u00e1ndez`_)\n + Introduce `block_on_close` attribute\n\n- v.0.1.4 (`Niels Zeilemaker`_)\n + Allow loading pkeys from `~/.ssh`\n\n- v.0.1.3 (`Ignacio Peluffo`_ and others)\n + ``pkey_file`` parameter updated to accept relative paths to user folder using ``~``\n + Several bugfixes\n\n- v.0.1.2 (`JM Fern\u00e1ndez`_)\n + Fix #77\n\n- v.0.1.1 (`JM Fern\u00e1ndez`_)\n + Fix #72\n\n- v.0.1.0 (`JM Fern\u00e1ndez`_)\n + Add `tunnel_bindings` property\n + Several bugfixes (#49, #56, #57, #59, #60, #62, #64, #66, ...)\n (`Pahaz Blinov`_, `JM Fern\u00e1ndez`_)\n + Add TRACE logging level (`JM Fern\u00e1ndez`_)\n + Code and tests refactoring (`JM Fern\u00e1ndez`_)\n + Drop python3.2 support\n\n- v.0.0.8 (`JM Fern\u00e1ndez`_)\n + Merge `#31`_: Support Unix domain socket (local) forwarding (`Dan Harbin`_)\n + Simplify API (`JM Fern\u00e1ndez`_)\n + Add sphinx-based documentation (`JM Fern\u00e1ndez`_)\n + Add ``allow_agent`` (fixes `#36`_, `#46`_) (`JM Fern\u00e1ndez`_)\n + Add ``compression`` (`JM Fern\u00e1ndez`_)\n + Add ``__str__`` method (`JM Fern\u00e1ndez`_)\n + Add test functions (`JM Fern\u00e1ndez`_)\n + Fix default username when not provided and ssh_config file is skipped (`JM Fern\u00e1ndez`_)\n + Fix gateway IP unresolvable exception catching (`JM Fern\u00e1ndez`_)\n + Minor fixes (`JM Fern\u00e1ndez`_)\n + Add AppVeyor support (`JM Fern\u00e1ndez`_)\n\n- v.0.0.7 (`JM Fern\u00e1ndez`_)\n + Tunnels can now be stopped and started safely (`#41`_) (`JM Fern\u00e1ndez`_)\n + Add timeout to SSH gateway and keep-alive messages (`#29`_) (`JM Fern\u00e1ndez`_)\n + Allow sending a pkey directly (`#43`_) (`Chronial`_)\n + Add ``-V`` CLI option to show current version (`JM Fern\u00e1ndez`_)\n + Add coverage (`JM Fern\u00e1ndez`_)\n + Refactoring (`JM Fern\u00e1ndez`_)\n\n- v.0.0.6 (`Pahaz Blinov`_)\n + add ``-S`` CLI options for ssh private key password support (`Pahaz Blinov`_)\n\n- v.0.0.5 (`Pahaz Blinov`_)\n + add ``ssh_proxy`` argument, as well as ``ssh_config(5)`` ``ProxyCommand`` support (`Lewis Thompson`_)\n + add some python 2.6 compatibility fixes (`Mart S\u00f5mermaa`_)\n + ``paramiko.transport`` inherits handlers of loggers passed to ``SSHTunnelForwarder`` (`JM Fern\u00e1ndez`_)\n + fix `#34`_, `#33`_, code style and docs (`JM Fern\u00e1ndez`_)\n + add tests (`Pahaz Blinov`_)\n + add CI integration (`Pahaz Blinov`_)\n + normal packaging (`Pahaz Blinov`_)\n + disable check distenation socket connection by ``SSHTunnelForwarder.local_is_up`` (`Pahaz Blinov`_) [changed default behavior]\n + use daemon mode = False in all threads by default; detail_ (`Pahaz Blinov`_) [changed default behavior]\n\n- v.0.0.4.4 (`Pahaz Blinov`_)\n + fix issue `#24`_ - hide ssh password in logs (`Pahaz Blinov`_)\n\n- v.0.0.4.3 (`Pahaz Blinov`_)\n + fix default port issue `#19`_ (`Pahaz Blinov`_)\n\n- v.0.0.4.2 (`Pahaz Blinov`_)\n + fix Thread.daemon mode for Python < 3.3 `#16`_, `#21`_ (`Lewis Thompson`_, `Erik Rogers`_)\n\n- v.0.0.4.1 (`Pahaz Blinov`_)\n + fix CLI issues `#13`_ (`Pahaz Blinov`_)\n\n- v.0.0.4 (`Pahaz Blinov`_)\n + daemon mode by default for all threads (`JM Fern\u00e1ndez`_, `Pahaz Blinov`_) - *incompatible*\n + move ``make_ssh_forward_server`` to ``SSHTunnelForwarder.make_ssh_forward_server`` (`Pahaz Blinov`_, `JM Fern\u00e1ndez`_) - *incompatible*\n + move ``make_ssh_forward_handler`` to ``SSHTunnelForwarder.make_ssh_forward_handler_class`` (`Pahaz Blinov`_, `JM Fern\u00e1ndez`_) - *incompatible*\n + rename ``open`` to ``open_tunnel`` (`JM Fern\u00e1ndez`_) - *incompatible*\n + add CLI interface (`JM Fern\u00e1ndez`_)\n + support opening several tunnels at once (`JM Fern\u00e1ndez`_)\n + improve stability and readability (`JM Fern\u00e1ndez`_, `Pahaz Blinov`_)\n + improve logging (`JM Fern\u00e1ndez`_, `Pahaz Blinov`_)\n + add ``raise_exception_if_any_forwarder_have_a_problem`` argument for opening several tunnels at once (`Pahaz Blinov`_)\n + add ``ssh_config_file`` argument support (`JM Fern\u00e1ndez`_)\n + add Python 3 support (`JM Fern\u00e1ndez`_, `Pahaz Blinov`_)\n\n- v.0.0.3 (`Pahaz Blinov`_)\n + add ``threaded`` option (`Cameron Maske`_)\n + fix exception error message, correctly printing destination address (`Gustavo Machado`_)\n + fix ``pip install`` failure (`Colin Jermain`_, `Pahaz Blinov`_)\n\n- v.0.0.1 (`Pahaz Blinov`_)\n + ``SSHTunnelForwarder`` class (`Pahaz Blinov`_)\n + ``open`` function (`Pahaz Blinov`_)\n\n\n.. _Cameron Maske: https://github.com/cameronmaske\n.. _Gustavo Machado: https://github.com/gdmachado\n.. _Colin Jermain: https://github.com/cjermain\n.. _JM Fern\u00e1ndez: https://github.com/fernandezcuesta\n.. _Lewis Thompson: https://github.com/lewisthompson\n.. _Erik Rogers: https://github.com/ewrogers\n.. _Mart S\u00f5mermaa: https://github.com/mrts\n.. _Chronial: https://github.com/Chronial\n.. _Dan Harbin: https://github.com/RasterBurn\n.. _Ignacio Peluffo: https://github.com/ipeluffo\n.. _Niels Zeilemaker: https://github.com/NielsZeilemaker\n.. _#13: https://github.com/pahaz/sshtunnel/issues/13\n.. _#16: https://github.com/pahaz/sshtunnel/issues/16\n.. _#19: https://github.com/pahaz/sshtunnel/issues/19\n.. _#21: https://github.com/pahaz/sshtunnel/issues/21\n.. _#24: https://github.com/pahaz/sshtunnel/issues/24\n.. _#29: https://github.com/pahaz/sshtunnel/issues/29\n.. _#31: https://github.com/pahaz/sshtunnel/issues/31\n.. _#33: https://github.com/pahaz/sshtunnel/issues/33\n.. _#34: https://github.com/pahaz/sshtunnel/issues/34\n.. _#36: https://github.com/pahaz/sshtunnel/issues/36\n.. _#41: https://github.com/pahaz/sshtunnel/issues/41\n.. _#43: https://github.com/pahaz/sshtunnel/issues/43\n.. _#46: https://github.com/pahaz/sshtunnel/issues/46\n.. _detail: https://github.com/pahaz/sshtunnel/commit/64af238b799b0e0057c4f9b386cda247e0006da9#diff-76bc1662a114401c2954deb92b740081R127", "description_content_type": "", "docs_url": null, "download_url": "https://pypi.python.org/packages/source/s/sshtunnel/sshtunnel-0.1.5.zip", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pahaz/sshtunnel", "keywords": "ssh tunnel paramiko proxy tcp-forward", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "sshtunnel", "package_url": "https://pypi.org/project/sshtunnel/", "platform": "unix", "project_url": "https://pypi.org/project/sshtunnel/", "project_urls": { "Download": "https://pypi.python.org/packages/source/s/sshtunnel/sshtunnel-0.1.5.zip", "Homepage": "https://github.com/pahaz/sshtunnel" }, "release_url": "https://pypi.org/project/sshtunnel/0.1.5/", "requires_dist": null, "requires_python": "", "summary": "Pure python SSH tunnels", "version": "0.1.5" }, "last_serial": 5395388, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "7905d7a37b60c0ba9a0cb7000c9b82fd", "sha256": "b1f765fb22a5c4d5c98bdc1dba762ffff09d6b1ec3ff15ec5da956ba15438fd0" }, "downloads": -1, "filename": "sshtunnel-0.0.1.zip", "has_sig": false, "md5_digest": "7905d7a37b60c0ba9a0cb7000c9b82fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8937, "upload_time": "2014-06-12T09:19:16", "url": "https://files.pythonhosted.org/packages/36/75/d39a33c8035d30658377434d64dc50031a022b444a1f651bec99b77eac15/sshtunnel-0.0.1.zip" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "d130e2f59bce6e01a58347a23f4c0062", "sha256": "1ac6196512ad8ca43830737b75e6ab748af7f67f3a9660299895dadac54f66b5" }, "downloads": -1, "filename": "sshtunnel-0.0.2-py2.7.egg", "has_sig": false, "md5_digest": "d130e2f59bce6e01a58347a23f4c0062", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 8456, "upload_time": "2015-02-16T18:58:40", "url": "https://files.pythonhosted.org/packages/ee/cf/8094f8d7ae7c6e253940af7f1b6e882a3bfd0a864b161cd38f8725af4198/sshtunnel-0.0.2-py2.7.egg" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "9eaed9a9a570f12dd6f6da34fdbe81e0", "sha256": "2c344c40c3ffa7b4e4019aec965f23cf314d6198d42314b84fc58053a816830a" }, "downloads": -1, "filename": "sshtunnel-0.0.3.zip", "has_sig": false, "md5_digest": "9eaed9a9a570f12dd6f6da34fdbe81e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9633, "upload_time": "2015-02-16T19:28:32", "url": "https://files.pythonhosted.org/packages/4b/4a/d828e6fe19118340c5aba765a61c8b2c2969a47bbbbcefe91398b8e203e4/sshtunnel-0.0.3.zip" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "9476d519994a15648a7f2e45f33e1887", "sha256": "8a5aa134f0cd2f52c644da4893ab2aeb9c7d4a55c495d8888ea3764f6ed90d4d" }, "downloads": -1, "filename": "sshtunnel-0.0.4.zip", "has_sig": false, "md5_digest": "9476d519994a15648a7f2e45f33e1887", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17621, "upload_time": "2015-06-17T18:55:04", "url": "https://files.pythonhosted.org/packages/28/9f/28ec7dc4e4547b669e1fe9217a4307d340114969b771d7347f973c3a1fd4/sshtunnel-0.0.4.zip" } ], "0.0.4.1": [ { "comment_text": "", "digests": { "md5": "c075de2792c5b0652fe26c69c2e5bb64", "sha256": "e9a0e26a943b8201b6b10d42fc4df9507c996015c4152c13529399840900d065" }, "downloads": -1, "filename": "sshtunnel-0.0.4.1.zip", "has_sig": false, "md5_digest": "c075de2792c5b0652fe26c69c2e5bb64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17507, "upload_time": "2015-06-17T20:03:29", "url": "https://files.pythonhosted.org/packages/fe/07/69f809f3a976ff63e8b5db41bc7ff88e99ad6c60847b46e7929ffa8d7649/sshtunnel-0.0.4.1.zip" } ], "0.0.4.2": [ { "comment_text": "", "digests": { "md5": "265da81591336fa14756e54b9665b869", "sha256": "54d860b214cde3814f4abf013b65fcd6f58395146fcfb85ff3f750e2795655b8" }, "downloads": -1, "filename": "sshtunnel-0.0.4.2.zip", "has_sig": false, "md5_digest": "265da81591336fa14756e54b9665b869", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17738, "upload_time": "2015-07-21T16:50:52", "url": "https://files.pythonhosted.org/packages/86/64/1cf9e98856843fa1f4dc06f9618ce3076d722f7052e36d462c461fa5ce05/sshtunnel-0.0.4.2.zip" } ], "0.0.4.3": [ { "comment_text": "", "digests": { "md5": "7e9116be785d7a3ff1add74dbc291ad7", "sha256": "27095dd475efcbcdd76a99d732bdd50c4192eba68c34b44555fb07b5f0e09128" }, "downloads": -1, "filename": "sshtunnel-0.0.4.3.zip", "has_sig": false, "md5_digest": "7e9116be785d7a3ff1add74dbc291ad7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17805, "upload_time": "2015-07-21T17:05:50", "url": "https://files.pythonhosted.org/packages/30/8b/f5a4f0e638ca10dcdb1c5bf3e083ee0d41e9ae9e6baf8eb1712452601be8/sshtunnel-0.0.4.3.zip" } ], "0.0.4.4": [ { "comment_text": "", "digests": { "md5": "d998c76f27b78cb0fa951287dd17b7e7", "sha256": "e7a744d064b711637b6f439d4772b8e946a328270dcd5212f9a1b6823dc6fae0" }, "downloads": -1, "filename": "sshtunnel-0.0.4.4.zip", "has_sig": false, "md5_digest": "d998c76f27b78cb0fa951287dd17b7e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17958, "upload_time": "2015-07-22T15:12:11", "url": "https://files.pythonhosted.org/packages/81/6d/c7c6600140ee2d6b2576d0a84de8acc740ec9ead0045e26da2b10083ba78/sshtunnel-0.0.4.4.zip" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "5c36420a39da18a2dd68052c960dc512", "sha256": "591a9b86345135176039601462b29dde33682ac9e59638a12931e2fdf3d4353f" }, "downloads": -1, "filename": "sshtunnel-0.0.5.zip", "has_sig": false, "md5_digest": "5c36420a39da18a2dd68052c960dc512", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21597, "upload_time": "2015-12-20T19:02:09", "url": "https://files.pythonhosted.org/packages/91/f6/810a54b368a733973216e71d1abd01631010cfd801228756ea92819d9fc3/sshtunnel-0.0.5.zip" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "a8f996ff3bc82a45290d0e5c96b00596", "sha256": "87a2b02b0b94b644fea5b3d1e55c69b6159ee2f3bafb003802010ca34fea4b14" }, "downloads": -1, "filename": "sshtunnel-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a8f996ff3bc82a45290d0e5c96b00596", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 12251, "upload_time": "2015-12-22T18:38:27", "url": "https://files.pythonhosted.org/packages/56/5f/26cadaf39a77afbc4087ba9138975f77843fcf82af8842332f8a58da4389/sshtunnel-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e516522e4003b89da39e67bc06685e7", "sha256": "e4767ac38763e563fe17aa1169a629140798055d27dfc5322757f12dc4183398" }, "downloads": -1, "filename": "sshtunnel-0.0.6.zip", "has_sig": false, "md5_digest": "1e516522e4003b89da39e67bc06685e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23861, "upload_time": "2015-12-22T18:38:20", "url": "https://files.pythonhosted.org/packages/ef/ba/40e5c2cc0e79d32008ea5966c543c19cf2c22c9ed649d2659996cb05472a/sshtunnel-0.0.6.zip" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "1ceb56afb42c40dcc6ee5417fed17d90", "sha256": "78b8d82301535340ed8cbf08a7773bebfcf02738386ad640f7cfa404a23cf878" }, "downloads": -1, "filename": "sshtunnel-0.0.7.tar.gz", "has_sig": false, "md5_digest": "1ceb56afb42c40dcc6ee5417fed17d90", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20559, "upload_time": "2016-02-09T18:11:52", "url": "https://files.pythonhosted.org/packages/19/4e/a6c1770945f64cb976dddf13a4c2a2db2b8476195ff8d6d01bcc42f323f3/sshtunnel-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "e8458dd1f6ae1c3bf3334fee806e83ab", "sha256": "60c7ccd521562fb647d7204844476b97ec7eea811b5f53789e6aa39b791c0026" }, "downloads": -1, "filename": "sshtunnel-0.0.8.tar.gz", "has_sig": false, "md5_digest": "e8458dd1f6ae1c3bf3334fee806e83ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32318, "upload_time": "2016-03-08T11:25:47", "url": "https://files.pythonhosted.org/packages/fe/0e/41977c19f6ff56ad74b79bd29a43adf5e31f72987eefe10bf8a4037471d9/sshtunnel-0.0.8.tar.gz" } ], "0.0.8.1": [ { "comment_text": "", "digests": { "md5": "b50dd95a8b9d6e3be55a90be9878ad02", "sha256": "4afc5074e33080949033f49bf8e7c26418044061d7a1aedafbe0ebff87daa61a" }, "downloads": -1, "filename": "sshtunnel-0.0.8.1.tar.gz", "has_sig": false, "md5_digest": "b50dd95a8b9d6e3be55a90be9878ad02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32616, "upload_time": "2016-03-14T15:28:12", "url": "https://files.pythonhosted.org/packages/89/05/e6f58ffaa2e73f2fb3d7661e2c2f556ed3f5f4392e9838b898cc5e4c5f11/sshtunnel-0.0.8.1.tar.gz" } ], "0.0.8.2": [ { "comment_text": "", "digests": { "md5": "ce8b4d5c04077e270f94224c779739c1", "sha256": "b57a9fe53f61de04dc8434c9b62374fd907baca3ef7f8185556e56bc96819e71" }, "downloads": -1, "filename": "sshtunnel-0.0.8.2.tar.gz", "has_sig": false, "md5_digest": "ce8b4d5c04077e270f94224c779739c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28816, "upload_time": "2016-04-10T12:13:31", "url": "https://files.pythonhosted.org/packages/d4/38/edb6132ecabf6f06f57999d444f1f4a66ea161932745bb2e5cacd21e78bd/sshtunnel-0.0.8.2.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "fa4b43d3d2780204fe162f17b94751cf", "sha256": "86458c79771dec3a2c6b7b63d5292e1e9d99f423054fb2d2ae6656e1e165f645" }, "downloads": -1, "filename": "sshtunnel-0.1.0.tar.gz", "has_sig": false, "md5_digest": "fa4b43d3d2780204fe162f17b94751cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34175, "upload_time": "2016-08-10T18:14:06", "url": "https://files.pythonhosted.org/packages/39/50/07e03bfbcee2668cc7262c2d2cc35ed939e1322bc3b86d4f1f5f0c897365/sshtunnel-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "9326b83da3cbc504b930aa661bde2bf6", "sha256": "0cedb3c88b74181da3eba7fee6671f76babf7e3bafe79f1c242c850a562dbfbe" }, "downloads": -1, "filename": "sshtunnel-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9326b83da3cbc504b930aa661bde2bf6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34217, "upload_time": "2016-09-30T13:39:43", "url": "https://files.pythonhosted.org/packages/e9/f4/70604c34100d4a183696e6d548de4bbcd217db369f86483a8f2faec69d57/sshtunnel-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a926d4c4617cc69e8e4184809af28b5e", "sha256": "61138098403746fc2b6243e96fc03710570d6920af37ea3c6b4005d6df209216" }, "downloads": -1, "filename": "sshtunnel-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a926d4c4617cc69e8e4184809af28b5e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27014, "upload_time": "2018-02-02T11:16:23", "url": "https://files.pythonhosted.org/packages/e1/b0/e7f0e1cc62a69a93eea7c2f20913c1e3e8f8abd795fe9155995fdc5a02a0/sshtunnel-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e99dbebe0b643f6d68b26ed434f3acd9", "sha256": "11032e23af010da81366ef944e8cb1cf508731e1d953463a420075acdfc02047" }, "downloads": -1, "filename": "sshtunnel-0.1.2.tar.gz", "has_sig": false, "md5_digest": "e99dbebe0b643f6d68b26ed434f3acd9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34425, "upload_time": "2016-10-27T15:47:02", "url": "https://files.pythonhosted.org/packages/dc/06/1d9969bbe7ad6895983016666699af2ab0b24d270c0abdecf51797d126cc/sshtunnel-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "18d4879ec22260fb9790f260a517d051", "sha256": "8e3c7fdf8b70231b6b672bc891e909905eafa50122d4be8341f60ebadc78f956" }, "downloads": -1, "filename": "sshtunnel-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "18d4879ec22260fb9790f260a517d051", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27033, "upload_time": "2018-02-02T11:16:43", "url": "https://files.pythonhosted.org/packages/c6/be/11a0a38cb89a0de78a7e09f145ad1443ec9fe4ea7945447fac0349852468/sshtunnel-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a6fce36dec45ebff11422565303b9c2", "sha256": "9673b26d91e8a5569e2513fc657c26b2574ccf222d1026612ba630438bceebb0" }, "downloads": -1, "filename": "sshtunnel-0.1.3.tar.gz", "has_sig": false, "md5_digest": "4a6fce36dec45ebff11422565303b9c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34958, "upload_time": "2018-02-02T11:16:45", "url": "https://files.pythonhosted.org/packages/9b/24/0eccfd7f0321184ef9d535d465ed02ba66e657089f97f307e7376bb97b6b/sshtunnel-0.1.3.tar.gz" } ], "0.1.3.1": [ { "comment_text": "", "digests": { "md5": "0d3ad4f7ac4ed8a49a0aa45d6ad8d86a", "sha256": "23aecddd25273e202509f7e0735def282e14019fdc7f237772276e82007e9442" }, "downloads": -1, "filename": "sshtunnel-0.1.3.1.tar.gz", "has_sig": false, "md5_digest": "0d3ad4f7ac4ed8a49a0aa45d6ad8d86a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47184, "upload_time": "2018-06-08T14:54:06", "url": "https://files.pythonhosted.org/packages/56/53/07fbbc1ca276b6db7ba5a10f6bbe776948c2eb184885e939d6c882f2de0f/sshtunnel-0.1.3.1.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "fb16cf0aec60451369ce23a0491c8b9b", "sha256": "f29ae41a1bd3afa64e9a31029bece2966e4be9a9641e8262372741e691c40d76" }, "downloads": -1, "filename": "sshtunnel-0.1.4.tar.gz", "has_sig": false, "md5_digest": "fb16cf0aec60451369ce23a0491c8b9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48330, "upload_time": "2018-06-12T11:14:42", "url": "https://files.pythonhosted.org/packages/bf/8d/385c7e7c90e17934b3102ad2902e224c27a7173a6a57ef4805dcef8043b1/sshtunnel-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "8c781366ebfc5e5146d6dc36a9fa5b84", "sha256": "c813fdcda8e81c3936ffeac47cb69cfb2d1f5e77ad0de656c6dab56aeebd9249" }, "downloads": -1, "filename": "sshtunnel-0.1.5.tar.gz", "has_sig": false, "md5_digest": "8c781366ebfc5e5146d6dc36a9fa5b84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49345, "upload_time": "2019-06-13T10:39:09", "url": "https://files.pythonhosted.org/packages/c5/5c/4b320d7ec4b0d5d4d6df1fdf66a5799625b3623d0ce4efe81719c6f8dfb3/sshtunnel-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8c781366ebfc5e5146d6dc36a9fa5b84", "sha256": "c813fdcda8e81c3936ffeac47cb69cfb2d1f5e77ad0de656c6dab56aeebd9249" }, "downloads": -1, "filename": "sshtunnel-0.1.5.tar.gz", "has_sig": false, "md5_digest": "8c781366ebfc5e5146d6dc36a9fa5b84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49345, "upload_time": "2019-06-13T10:39:09", "url": "https://files.pythonhosted.org/packages/c5/5c/4b320d7ec4b0d5d4d6df1fdf66a5799625b3623d0ce4efe81719c6f8dfb3/sshtunnel-0.1.5.tar.gz" } ] }