1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
93 for c in locals().values():
94 if issubclass(type(c), type) or type(c).__name__ == 'classobj':
95
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