diff options
author | Sebastian Deiss <s.deiss@science-computing.de> | 2014-03-26 11:39:26 +0100 |
---|---|---|
committer | Sebastian Deiss <s.deiss@science-computing.de> | 2014-03-26 11:39:26 +0100 |
commit | a23d9bc654b5278f1ab43df825ed559e4f9a2332 (patch) | |
tree | 593ae35cd2b7f550f5b9ff3d4babac57f072e741 /sites | |
parent | 5407b1a27468d5abedde93b51aad5bd97bd046c4 (diff) | |
parent | bd8f96d33a3e1ee6162540a6f230ef93e435528a (diff) |
Merge branch 'master' into gssapi-py3-support
Conflicts:
.gitignore
README
demos/demo_simple.py
dev-requirements.txt
paramiko/__init__.py
paramiko/_winapi.py
paramiko/agent.py
paramiko/auth_handler.py
paramiko/ber.py
paramiko/buffered_pipe.py
paramiko/channel.py
paramiko/client.py
paramiko/common.py
paramiko/dsskey.py
paramiko/ecdsakey.py
paramiko/file.py
paramiko/hostkeys.py
paramiko/kex_gex.py
paramiko/kex_group1.py
paramiko/message.py
paramiko/packet.py
paramiko/pkey.py
paramiko/primes.py
paramiko/proxy.py
paramiko/py3compat.py
paramiko/server.py
paramiko/sftp_client.py
paramiko/transport.py
paramiko/util.py
paramiko/win_pageant.py
setup.py
sites/shared_conf.py
sites/www/changelog.rst
sites/www/conf.py
sites/www/index.rst
sites/www/installing.rst
test.py
tests/loop.py
tests/stub_sftp.py
tests/test_auth.py
tests/test_client.py
tests/test_file.py
tests/test_hostkeys.py
tests/test_kex.py
tests/test_message.py
tests/test_packetizer.py
tests/test_pkey.py
tests/test_sftp.py
tests/test_sftp_big.py
tests/test_transport.py
tests/test_util.py
Diffstat (limited to 'sites')
-rw-r--r-- | sites/docs/api/agent.rst | 6 | ||||
-rw-r--r-- | sites/docs/api/buffered_pipe.rst | 4 | ||||
-rw-r--r-- | sites/docs/api/channel.rst | 4 | ||||
-rw-r--r-- | sites/docs/api/client.rst | 5 | ||||
-rw-r--r-- | sites/docs/api/config.rst | 5 | ||||
-rw-r--r-- | sites/docs/api/file.rst | 4 | ||||
-rw-r--r-- | sites/docs/api/hostkeys.rst | 5 | ||||
-rw-r--r-- | sites/docs/api/keys.rst | 6 | ||||
-rw-r--r-- | sites/docs/api/message.rst | 4 | ||||
-rw-r--r-- | sites/docs/api/packet.rst | 4 | ||||
-rw-r--r-- | sites/docs/api/pipe.rst | 4 | ||||
-rw-r--r-- | sites/docs/api/proxy.rst | 4 | ||||
-rw-r--r-- | sites/docs/api/server.rst | 5 | ||||
-rw-r--r-- | sites/docs/api/sftp.rst | 13 | ||||
-rw-r--r-- | sites/docs/api/ssh_exception.rst | 4 | ||||
-rw-r--r-- | sites/docs/api/transport.rst | 5 | ||||
-rw-r--r-- | sites/docs/conf.py | 16 | ||||
-rw-r--r-- | sites/docs/index.rst | 72 | ||||
-rw-r--r-- | sites/shared_conf.py | 4 | ||||
-rw-r--r-- | sites/www/changelog.rst | 68 | ||||
-rw-r--r-- | sites/www/conf.py | 8 | ||||
-rw-r--r-- | sites/www/faq.rst | 9 | ||||
-rw-r--r-- | sites/www/index.rst | 3 | ||||
-rw-r--r-- | sites/www/installing.rst | 60 |
24 files changed, 270 insertions, 52 deletions
diff --git a/sites/docs/api/agent.rst b/sites/docs/api/agent.rst new file mode 100644 index 00000000..3b614a82 --- /dev/null +++ b/sites/docs/api/agent.rst @@ -0,0 +1,6 @@ +SSH Agents +========== + +.. automodule:: paramiko.agent + :inherited-members: + :no-special-members: diff --git a/sites/docs/api/buffered_pipe.rst b/sites/docs/api/buffered_pipe.rst new file mode 100644 index 00000000..54d87c59 --- /dev/null +++ b/sites/docs/api/buffered_pipe.rst @@ -0,0 +1,4 @@ +Buffered pipes +============== + +.. automodule:: paramiko.buffered_pipe diff --git a/sites/docs/api/channel.rst b/sites/docs/api/channel.rst new file mode 100644 index 00000000..e71526f6 --- /dev/null +++ b/sites/docs/api/channel.rst @@ -0,0 +1,4 @@ +Channel +======= + +.. automodule:: paramiko.channel diff --git a/sites/docs/api/client.rst b/sites/docs/api/client.rst new file mode 100644 index 00000000..b201812f --- /dev/null +++ b/sites/docs/api/client.rst @@ -0,0 +1,5 @@ +Client +====== + +.. automodule:: paramiko.client + :member-order: bysource diff --git a/sites/docs/api/config.rst b/sites/docs/api/config.rst new file mode 100644 index 00000000..afb004c9 --- /dev/null +++ b/sites/docs/api/config.rst @@ -0,0 +1,5 @@ +Configuration +============= + +.. automodule:: paramiko.config + :member-order: bysource diff --git a/sites/docs/api/file.rst b/sites/docs/api/file.rst new file mode 100644 index 00000000..199f3ecc --- /dev/null +++ b/sites/docs/api/file.rst @@ -0,0 +1,4 @@ +Buffered files +============== + +.. automodule:: paramiko.file diff --git a/sites/docs/api/hostkeys.rst b/sites/docs/api/hostkeys.rst new file mode 100644 index 00000000..770652fd --- /dev/null +++ b/sites/docs/api/hostkeys.rst @@ -0,0 +1,5 @@ +Host keys / ``known_hosts`` files +================================= + +.. automodule:: paramiko.hostkeys + :member-order: bysource diff --git a/sites/docs/api/keys.rst b/sites/docs/api/keys.rst new file mode 100644 index 00000000..af7b58c4 --- /dev/null +++ b/sites/docs/api/keys.rst @@ -0,0 +1,6 @@ +Key handling +============ + +.. automodule:: paramiko.pkey +.. automodule:: paramiko.dsskey +.. automodule:: paramiko.rsakey diff --git a/sites/docs/api/message.rst b/sites/docs/api/message.rst new file mode 100644 index 00000000..8d531e01 --- /dev/null +++ b/sites/docs/api/message.rst @@ -0,0 +1,4 @@ +Message +======= + +.. automodule:: paramiko.message diff --git a/sites/docs/api/packet.rst b/sites/docs/api/packet.rst new file mode 100644 index 00000000..4089203b --- /dev/null +++ b/sites/docs/api/packet.rst @@ -0,0 +1,4 @@ +Packetizer +========== + +.. automodule:: paramiko.packet diff --git a/sites/docs/api/pipe.rst b/sites/docs/api/pipe.rst new file mode 100644 index 00000000..e480446f --- /dev/null +++ b/sites/docs/api/pipe.rst @@ -0,0 +1,4 @@ +Cross-platform pipe implementations +=================================== + +.. automodule:: paramiko.pipe diff --git a/sites/docs/api/proxy.rst b/sites/docs/api/proxy.rst new file mode 100644 index 00000000..489b14e7 --- /dev/null +++ b/sites/docs/api/proxy.rst @@ -0,0 +1,4 @@ +``ProxyCommand`` support +======================== + +.. automodule:: paramiko.proxy diff --git a/sites/docs/api/server.rst b/sites/docs/api/server.rst new file mode 100644 index 00000000..ea854544 --- /dev/null +++ b/sites/docs/api/server.rst @@ -0,0 +1,5 @@ +Server implementation +===================== + +.. automodule:: paramiko.server + :member-order: bysource diff --git a/sites/docs/api/sftp.rst b/sites/docs/api/sftp.rst new file mode 100644 index 00000000..956eada2 --- /dev/null +++ b/sites/docs/api/sftp.rst @@ -0,0 +1,13 @@ +SFTP +==== + +.. automodule:: paramiko.sftp +.. automodule:: paramiko.sftp_client +.. automodule:: paramiko.sftp_server +.. automodule:: paramiko.sftp_attr +.. automodule:: paramiko.sftp_file + :inherited-members: + :no-special-members: + :show-inheritance: +.. automodule:: paramiko.sftp_handle +.. automodule:: paramiko.sftp_si diff --git a/sites/docs/api/ssh_exception.rst b/sites/docs/api/ssh_exception.rst new file mode 100644 index 00000000..64872dc2 --- /dev/null +++ b/sites/docs/api/ssh_exception.rst @@ -0,0 +1,4 @@ +Exceptions +========== + +.. automodule:: paramiko.ssh_exception diff --git a/sites/docs/api/transport.rst b/sites/docs/api/transport.rst new file mode 100644 index 00000000..7c9d9fd1 --- /dev/null +++ b/sites/docs/api/transport.rst @@ -0,0 +1,5 @@ +Transport +========= + +.. automodule:: paramiko.transport + :member-order: bysource diff --git a/sites/docs/conf.py b/sites/docs/conf.py new file mode 100644 index 00000000..619ff816 --- /dev/null +++ b/sites/docs/conf.py @@ -0,0 +1,16 @@ +# Obtain shared config values +import os, sys +sys.path.append(os.path.abspath('..')) +sys.path.append(os.path.abspath('../..')) +from shared_conf import * + +# Enable autodoc, intersphinx +extensions.extend(['sphinx.ext.autodoc', 'sphinx.ext.intersphinx']) + +# Autodoc settings +autodoc_default_flags = ['members', 'special-members'] + +# Intersphinx connection to stdlib +intersphinx_mapping = { + 'python': ('http://docs.python.org/2.6', None), +} diff --git a/sites/docs/index.rst b/sites/docs/index.rst new file mode 100644 index 00000000..f336b393 --- /dev/null +++ b/sites/docs/index.rst @@ -0,0 +1,72 @@ +==================================== +Welcome to Paramiko's documentation! +==================================== + +This site covers Paramiko's usage & API documentation. For basic info on what +Paramiko is, including its public changelog & how the project is maintained, +please see `the main project website <http://paramiko.org>`_. + + +API documentation +================= + +The high-level client API starts with creation of an `.SSHClient` object. For +more direct control, pass a socket (or socket-like object) to a `.Transport`, +and use `start_server <.Transport.start_server>` or `start_client +<.Transport.start_client>` to negotiate with the remote host as either a server +or client. + +As a client, you are responsible for authenticating using a password or private +key, and checking the server's host key. (Key signature and verification is +done by paramiko, but you will need to provide private keys and check that the +content of a public key matches what you expected to see.) + +As a server, you are responsible for deciding which users, passwords, and keys +to allow, and what kind of channels to allow. + +Once you have finished, either side may request flow-controlled `channels +<.Channel>` to the other side, which are Python objects that act like sockets, +but send and receive data over the encrypted session. + +For details, please see the following tables of contents (which are organized +by area of interest.) + + +Core SSH protocol classes +------------------------- + +.. toctree:: + api/channel + api/client + api/message + api/packet + api/transport + + +Authentication & keys +--------------------- + +.. toctree:: + api/agent + api/hostkeys + api/keys + + +Other primary functions +----------------------- + +.. toctree:: + api/config + api/proxy + api/server + api/sftp + + +Miscellany +---------- + +.. toctree:: + api/buffered_pipe + api/file + api/pipe + api/ssh_exception diff --git a/sites/shared_conf.py b/sites/shared_conf.py index 86ecdfe8..52cec938 100644 --- a/sites/shared_conf.py +++ b/sites/shared_conf.py @@ -31,9 +31,9 @@ html_sidebars = { } # Regular settings -project = u'Paramiko' +project = 'Paramiko' year = datetime.now().year -copyright = u'%d Jeff Forcier' % year +copyright = '%d Jeff Forcier' % year master_doc = 'index' templates_path = ['_templates'] exclude_trees = ['_build'] diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst index 2680086e..5b221e90 100644 --- a/sites/www/changelog.rst +++ b/sites/www/changelog.rst @@ -3,24 +3,66 @@ Changelog ========= * :feature:`250` GSS-API / SSPI authenticated Diffie-Hellman Key Exchange and user authentication. -* :bug:`193` (and its attentant PRs :issue:`230` & :issue:`253`): Fix SSH agent +* :support:`290` (also :issue:`292`) Add support for building universal + (Python 2+3 compatible) wheel files during the release process. Courtesy of + Alex Gaynor. +* :support:`284` Add Python language trove identifiers to ``setup.py``. Thanks + to Alex Gaynor for catch & patch. +* :bug:`235` Improve string type testing in a handful of spots (e.g. ``s/if + type(x) is str/if isinstance(x, basestring)/g``.) Thanks to ``@ksamuel`` for + the report. +* :release:`1.13.0 <2014-03-13>` +* :release:`1.12.3 <2014-03-13>` +* :release:`1.11.5 <2014-03-13>` +* :release:`1.10.7 <2014-03-13>` +* :feature:`16` **Python 3 support!** Our test suite passes under Python 3, and + it (& Fabric's test suite) continues to pass under Python 2. + + The merged code was built on many contributors' efforts, both code & + feedback. In no particular order, we thank Daniel Goertzen, Ivan Kolodyazhny, + Tomi Pieviläinen, Jason R. Coombs, Jan N. Schulze, ``@Lazik``, Dorian Pula, + Scott Maxwell, Tshepang Lekhonkhobe, Aaron Meurer, and Dave Halter. +* :support:`256 backported` Convert API documentation to Sphinx, yielding a new + API docs website to replace the old Epydoc one. Thanks to Olle Lundberg for + the initial conversion work. +* :bug:`-` Use constant-time hash comparison operations where possible, to + protect against `timing-based attacks + <http://codahale.com/a-lesson-in-timing-attacks/>`_. Thanks to Alex Gaynor + for the patch. +* :release:`1.12.2 <2014-02-14>` +* :release:`1.11.4 <2014-02-14>` +* :release:`1.10.6 <2014-02-14>` +* :feature:`58` Allow client code to access the stored SSH server banner via + `Transport.get_banner <paramiko.transport.Transport.get_banner>`. Thanks to + ``@Jhoanor`` for the patch. +* :bug:`252` (`Fabric #1020 <https://github.com/fabric/fabric/issues/1020>`_) + Enhanced the implementation of ``ProxyCommand`` to avoid a deadlock/hang + condition that frequently occurs at ``Transport`` shutdown time. Thanks to + Mateusz Kobos, Matthijs van der Vleuten and Guillaume Zitta for the original + reports and to Marius Gedminas for helping test nontrivial use cases. +* :bug:`268` Fix some missed renames of ``ProxyCommand`` related error classes. + Thanks to Marius Gedminas for catch & patch. +* :bug:`34` (PR :issue:`35`) Fix SFTP prefetching incompatibility with some + SFTP servers regarding request/response ordering. Thanks to Richard + Kettlewell. +* :bug:`193` (and its attentant PRs :issue:`230` & :issue:`253`) Fix SSH agent problems present on Windows. Thanks to David Hobbs for initial report and to Aarni Koskela & Olle Lundberg for the patches. * :release:`1.12.1 <2014-01-08>` -* :release:`1.11.3 <2014-01-08>` 176 -* :release:`1.10.5 <2014-01-08>` 176 -* :bug:`225` Note ecdsa requirement in README. Thanks to Amaury Rodriguez for - the catch. +* :release:`1.11.3 <2014-01-08>` +* :release:`1.10.5 <2014-01-08>` +* :bug:`225 (1.12+)` Note ecdsa requirement in README. Thanks to Amaury + Rodriguez for the catch. * :bug:`176` Fix AttributeError bugs in known_hosts file (re)loading. Thanks to Nathan Scowcroft for the patch & Martin Blumenstingl for the initial test case. * :release:`1.12.0 <2013-09-27>` * :release:`1.11.2 <2013-09-27>` -* :release:`1.10.4 <2013-09-27>` 199, 200, 179 -* :feature:`152` Add tentative support for ECDSA keys. *This adds the ecdsa - module as a new dependency of Paramiko.* The module is available at - [warner/python-ecdsa on Github](https://github.com/warner/python-ecdsa) and - [ecdsa on PyPI](https://pypi.python.org/pypi/ecdsa). +* :release:`1.10.4 <2013-09-27>` +* :feature:`152` Add tentative support for ECDSA keys. **This adds the ecdsa + module as a new dependency of Paramiko.** The module is available at + `warner/python-ecdsa on Github <https://github.com/warner/python-ecdsa>`_ and + `ecdsa on PyPI <https://pypi.python.org/pypi/ecdsa>`_. * Note that you might still run into problems with key negotiation -- Paramiko picks the first key that the server offers, which might not be @@ -29,9 +71,9 @@ Changelog * :feature:`136` Add server-side support for the SSH protocol's 'env' command. Thanks to Benjamin Pollack for the patch. -* :bug:`156` Fix potential deadlock condition when using Channel objects as - sockets (e.g. when using SSH gatewaying). Thanks to Steven Noonan and Frank - Arnold for catch & patch. +* :bug:`156 (1.11+)` Fix potential deadlock condition when using Channel + objects as sockets (e.g. when using SSH gatewaying). Thanks to Steven Noonan + and Frank Arnold for catch & patch. * :bug:`179` Fix a missing variable causing errors when an ssh_config file has a non-default AddressFamily set. Thanks to Ed Marshall & Tomaz Muraus for catch & patch. diff --git a/sites/www/conf.py b/sites/www/conf.py index 481acdff..1c6c9254 100644 --- a/sites/www/conf.py +++ b/sites/www/conf.py @@ -24,10 +24,10 @@ extensions.append('sphinx.ext.intersphinx') target = join(dirname(__file__), '..', 'docs', '_build') if os.environ.get('READTHEDOCS') == 'True': # TODO: switch to docs.paramiko.org post go-live of sphinx API docs - target = 'http://paramiko-docs.readthedocs.org/en/latest/' -#intersphinx_mapping = { -# 'docs': (target, None), -#} + target = 'http://docs.paramiko.org/en/latest/' +intersphinx_mapping = { + 'docs': (target, None), +} # Sister-site links to API docs html_theme_options['extra_nav_links'] = { diff --git a/sites/www/faq.rst b/sites/www/faq.rst new file mode 100644 index 00000000..a7e80014 --- /dev/null +++ b/sites/www/faq.rst @@ -0,0 +1,9 @@ +=================================== +Frequently Asked/Answered Questions +=================================== + +Which version should I use? I see multiple active releases. +=========================================================== + +Please see :ref:`the installation docs <release-lines>` which have an explicit +section about this topic. diff --git a/sites/www/index.rst b/sites/www/index.rst index 7fefedd2..cb3961ce 100644 --- a/sites/www/index.rst +++ b/sites/www/index.rst @@ -1,7 +1,7 @@ Welcome to Paramiko! ==================== -Paramiko is a Python (2.5+) implementation of the SSHv2 protocol [#]_, +Paramiko is a Python (2.6+, 3.3+) implementation of the SSHv2 protocol [#]_, providing both client and server functionality. While it leverages a Python C extension for low level cryptography (`PyCrypto <http://pycrypto.org>`_), Paramiko itself is a pure Python interface around SSH networking concepts. @@ -13,6 +13,7 @@ usage and API documentation can be found at our code documentation site, .. toctree:: changelog + FAQs <faq> installing contributing contact diff --git a/sites/www/installing.rst b/sites/www/installing.rst index 0d4dc1ac..74c5c6e8 100644 --- a/sites/www/installing.rst +++ b/sites/www/installing.rst @@ -2,10 +2,12 @@ Installing ========== +.. _paramiko-itself: + Paramiko itself =============== -The recommended way to get Invoke is to **install the latest stable release** +The recommended way to get Paramiko is to **install the latest stable release** via `pip <http://pip-installer.org>`_:: $ pip install paramiko @@ -14,50 +16,44 @@ via `pip <http://pip-installer.org>`_:: Users who want the bleeding edge can install the development version via ``pip install paramiko==dev``. -We currently support **Python 2.5/2.6/2.7**, with support for Python 3 coming -soon. Users on Python 2.4 or older are urged to upgrade. Paramiko *may* work on -Python 2.4 still, but there is no longer any support guarantee. +We currently support **Python 2.6, 2.7 and 3.3** (Python **3.2** should also +work but has a less-strong compatibility guarantee from us.) Users on Python +2.5 or older are urged to upgrade. Paramiko has two dependencies: the pure-Python ECDSA module `ecdsa`, and the PyCrypto C extension. `ecdsa` is easily installable from wherever you obtained Paramiko's package; PyCrypto may require more work. Read on for details. -PyCrypto -======== - -`PyCrypto <https://www.dlitz.net/software/pycrypto/>`_ provides the low-level -(C-based) encryption algorithms we need to implement the SSH protocol. There -are a couple gotchas associated with installing PyCrypto: its compatibility -with Python's package tools, and the fact that it is a C-based extension. +.. _release-lines: -.. _pycrypto-and-pip: +Release lines +------------- -Possible gotcha on older Python and/or pip versions ---------------------------------------------------- +Users desiring stability may wish to pin themselves to a specific release line +once they first start using Paramiko; to assist in this, we guarantee bugfixes +for at least the last 2-3 releases including the latest stable one. This currently means Paramiko **1.11** through **1.13**. -We strongly recommend using ``pip`` to as it is newer and generally better than -``easy_install``. However, a combination of bugs in specific (now rather old) -versions of Python, ``pip`` and PyCrypto can prevent installation of PyCrypto. -Specifically: +If you're unsure which version to install, we have suggestions: -* Python = 2.5.x -* PyCrypto >= 2.1 (required for most modern versions of Paramiko) -* ``pip`` < 0.8.1 +* **Completely new users** should always default to the **latest stable + release** (as above, whatever is newest / whatever shows up with ``pip + install paramiko``.) +* **Users upgrading from a much older version** (e.g. the 1.7.x line) should + probably get the **oldest actively supported line** (see the paragraph above + this list for what that currently is.) +* **Everybody else** is hopefully already "on" a given version and can + carefully upgrade to whichever version they care to, when their release line + stops being supported. -When all three criteria are met, you may encounter ``No such file or -directory`` IOErrors when trying to ``pip install paramiko`` or ``pip install -PyCrypto``. -The fix is to make sure at least one of the above criteria is not met, by doing -the following (in order of preference): - -* Upgrade to ``pip`` 0.8.1 or above, e.g. by running ``pip install -U pip``. -* Upgrade to Python 2.6 or above. -* Downgrade to Paramiko 1.7.6 or 1.7.7, which do not require PyCrypto >= 2.1, - and install PyCrypto 2.0.1 (the oldest version on PyPI which works with - Paramiko 1.7.6/1.7.7) +PyCrypto +======== +`PyCrypto <https://www.dlitz.net/software/pycrypto/>`_ provides the low-level +(C-based) encryption algorithms we need to implement the SSH protocol. There +are a couple gotchas associated with installing PyCrypto: its compatibility +with Python's package tools, and the fact that it is a C-based extension. C extension ----------- |