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.11.2" 
 61  __license__ = "GNU Lesser General Public License (LGPL)" 
 62   
 63   
 64  from transport import SecurityOptions, Transport 
 65  from client import SSHClient, MissingHostKeyPolicy, AutoAddPolicy, RejectPolicy, WarningPolicy 
 66  from auth_handler import AuthHandler 
 67  from channel import Channel, ChannelFile 
 68  from ssh_exception import SSHException, PasswordRequiredException, \ 
 69      BadAuthenticationType, ChannelException, BadHostKeyException, \ 
 70      AuthenticationException, ProxyCommandFailure 
 71  from server import ServerInterface, SubsystemHandler, InteractiveQuery 
 72  from rsakey import RSAKey 
 73  from dsskey import DSSKey 
 74  from sftp import SFTPError, BaseSFTP 
 75  from sftp_client import SFTP, SFTPClient 
 76  from sftp_server import SFTPServer 
 77  from sftp_attr import SFTPAttributes 
 78  from sftp_handle import SFTPHandle 
 79  from sftp_si import SFTPServerInterface 
 80  from sftp_file import SFTPFile 
 81  from message import Message 
 82  from packet import Packetizer 
 83  from file import BufferedFile 
 84  from agent import Agent, AgentKey 
 85  from pkey import PKey 
 86  from hostkeys import HostKeys 
 87  from config import SSHConfig 
 88  from proxy import ProxyCommand 
 89   
 90  # fix module names for epydoc 
 91  for c in locals().values(): 
 92      if issubclass(type(c), type) or type(c).__name__ == 'classobj': 
 93          # classobj for exceptions :/ 
 94          c.__module__ = __name__ 
 95  del c 
 96   
 97  from common import AUTH_SUCCESSFUL, AUTH_PARTIALLY_SUCCESSFUL, AUTH_FAILED, \ 
 98       OPEN_SUCCEEDED, OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,  OPEN_FAILED_CONNECT_FAILED, \ 
 99       OPEN_FAILED_UNKNOWN_CHANNEL_TYPE, OPEN_FAILED_RESOURCE_SHORTAGE 
100   
101  from sftp import SFTP_OK, SFTP_EOF, SFTP_NO_SUCH_FILE, SFTP_PERMISSION_DENIED, SFTP_FAILURE, \ 
102       SFTP_BAD_MESSAGE, SFTP_NO_CONNECTION, SFTP_CONNECTION_LOST, SFTP_OP_UNSUPPORTED 
103   
104  from common import io_sleep 
105   
106  __all__ = [ 'Transport', 
107              'SSHClient', 
108              'MissingHostKeyPolicy', 
109              'AutoAddPolicy', 
110              'RejectPolicy', 
111              'WarningPolicy', 
112              'SecurityOptions', 
113              'SubsystemHandler', 
114              'Channel', 
115              'PKey', 
116              'RSAKey', 
117              'DSSKey', 
118              'Message', 
119              'SSHException', 
120              'AuthenticationException', 
121              'PasswordRequiredException', 
122              'BadAuthenticationType', 
123              'ChannelException', 
124              'BadHostKeyException', 
125              'ProxyCommand', 
126              'ProxyCommandFailure', 
127              'SFTP', 
128              'SFTPFile', 
129              'SFTPHandle', 
130              'SFTPClient', 
131              'SFTPServer', 
132              'SFTPError', 
133              'SFTPAttributes', 
134              'SFTPServerInterface', 
135              'ServerInterface', 
136              'BufferedFile', 
137              'Agent', 
138              'AgentKey', 
139              'HostKeys', 
140              'SSHConfig', 
141              'util', 
142              'io_sleep' ] 
143