paramiko

Package paramiko |
[frames] | no frames]

# Source Code for Package paramiko

      1  # Copyright (C) 2003-2011  Robey Pointer <robeypointer@gmail.com>
      2  #
      3  # This file is part of paramiko.
      4  #
      5  # Paramiko is free software; you can redistribute it and/or modify it under the
      6  # terms of the GNU Lesser General Public License as published by the Free
      7  # Software Foundation; either version 2.1 of the License, or (at your option)
      8  # any later version.
      9  #
     10  # Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY
     11  # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
     12  # A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
     13  # details.
     14  #
     15  # You should have received a copy of the GNU Lesser General Public License
     16  # along with Paramiko; if not, write to the Free Software Foundation, Inc.,
     17  # 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
     18
     19  """
     20  I{Paramiko} (a combination of the esperanto words for "paranoid" and "friend")
     21  is a module for python 2.5 or greater that implements the SSH2 protocol for
     22  secure (encrypted and authenticated) connections to remote machines.  Unlike
     23  SSL (aka TLS), the SSH2 protocol does not require hierarchical certificates
     24  signed by a powerful central authority.  You may know SSH2 as the protocol that
     25  replaced C{telnet} and C{rsh} for secure access to remote shells, but the
     26  protocol also includes the ability to open arbitrary channels to remote
     27  services across an encrypted tunnel.  (This is how C{sftp} works, for example.)
     28
     29  The high-level client API starts with creation of an L{SSHClient} object.
     30  For more direct control, pass a socket (or socket-like object) to a
     31  L{Transport}, and use L{start_server <Transport.start_server>} or
     32  L{start_client <Transport.start_client>} to negoatite
     33  with the remote host as either a server or client.  As a client, you are
     34  responsible for authenticating using a password or private key, and checking
     35  the server's host key.  I{(Key signature and verification is done by paramiko,
     36  but you will need to provide private keys and check that the content of a
     37  public key matches what you expected to see.)}  As a server, you are
     38  responsible for deciding which users, passwords, and keys to allow, and what
     39  kind of channels to allow.
     40
     41  Once you have finished, either side may request flow-controlled L{Channel}s to
     42  the other side, which are python objects that act like sockets, but send and
     43  receive data over the encrypted session.
     44
     45  Paramiko is written entirely in python (no C or platform-dependent code) and is
     46  released under the GNU Lesser General Public License (LGPL).
     47
     48  Website: U{https://github.com/paramiko/paramiko/}
     49
     50  Mailing list: U{paramiko@librelist.com<mailto:paramiko@librelist.com>}
     51  """
     52
     53  import sys
     54
     55  if sys.version_info < (2, 5):
     56      raise RuntimeError('You need python 2.5+ for this module.')
     57
     58
     59  __author__ = "Jeff Forcier <jeff@bitprophet.org>"
     60  __version__ = "1.12.1"
     61  __version_info__ = tuple([ int(d) for d in __version__.split(".") ])
     62  __license__ = "GNU Lesser General Public License (LGPL)"
     63
     64
     65  from transport import SecurityOptions, Transport
     66  from client import SSHClient, MissingHostKeyPolicy, AutoAddPolicy, RejectPolicy, WarningPolicy
     67  from auth_handler import AuthHandler
     68  from channel import Channel, ChannelFile
     69  from ssh_exception import SSHException, PasswordRequiredException, \
     70      BadAuthenticationType, ChannelException, BadHostKeyException, \
     71      AuthenticationException, ProxyCommandFailure
     72  from server import ServerInterface, SubsystemHandler, InteractiveQuery
     73  from rsakey import RSAKey
     74  from dsskey import DSSKey
     75  from ecdsakey import ECDSAKey
     76  from sftp import SFTPError, BaseSFTP
     77  from sftp_client import SFTP, SFTPClient
     78  from sftp_server import SFTPServer
     79  from sftp_attr import SFTPAttributes
     80  from sftp_handle import SFTPHandle
     81  from sftp_si import SFTPServerInterface
     82  from sftp_file import SFTPFile
     83  from message import Message
     84  from packet import Packetizer
     85  from file import BufferedFile
     86  from agent import Agent, AgentKey
     87  from pkey import PKey
     88  from hostkeys import HostKeys
     89  from config import SSHConfig
     90  from proxy import ProxyCommand
     91
     92  # fix module names for epydoc
     93  for c in locals().values():
     94      if issubclass(type(c), type) or type(c).__name__ == 'classobj':
     95          # classobj for exceptions :/
     96          c.__module__ = __name__
     97  del c
     98
     99  from common import AUTH_SUCCESSFUL, AUTH_PARTIALLY_SUCCESSFUL, AUTH_FAILED, \
    100       OPEN_SUCCEEDED, OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,  OPEN_FAILED_CONNECT_FAILED, \
    101       OPEN_FAILED_UNKNOWN_CHANNEL_TYPE, OPEN_FAILED_RESOURCE_SHORTAGE
    102
    103  from sftp import SFTP_OK, SFTP_EOF, SFTP_NO_SUCH_FILE, SFTP_PERMISSION_DENIED, SFTP_FAILURE, \
    104       SFTP_BAD_MESSAGE, SFTP_NO_CONNECTION, SFTP_CONNECTION_LOST, SFTP_OP_UNSUPPORTED
    105
    106  from common import io_sleep
    107
    108  __all__ = [ 'Transport',
    109              'SSHClient',
    110              'MissingHostKeyPolicy',
    111              'AutoAddPolicy',
    112              'RejectPolicy',
    113              'WarningPolicy',
    114              'SecurityOptions',
    115              'SubsystemHandler',
    116              'Channel',
    117              'PKey',
    118              'RSAKey',
    119              'DSSKey',
    120              'Message',
    121              'SSHException',
    122              'AuthenticationException',
    123              'PasswordRequiredException',
    124              'BadAuthenticationType',
    125              'ChannelException',
    126              'BadHostKeyException',
    127              'ProxyCommand',
    128              'ProxyCommandFailure',
    129              'SFTP',
    130              'SFTPFile',
    131              'SFTPHandle',
    132              'SFTPClient',
    133              'SFTPServer',
    134              'SFTPError',
    135              'SFTPAttributes',
    136              'SFTPServerInterface',
    137              'ServerInterface',
    138              'BufferedFile',
    139              'Agent',
    140              'AgentKey',
    141              'HostKeys',
    142              'SSHConfig',
    143              'util',
    144              'io_sleep' ]
    145