2004-01-04 04:29:13 -05:00
|
|
|
#!/usr/bin/python
|
|
|
|
|
|
|
|
"""
|
|
|
|
I{Paramiko} (a combination of the esperanto words for "paranoid" and "friend")
|
|
|
|
is a module for python 2.3 or greater that implements the SSH2 protocol for
|
|
|
|
secure (encrypted and authenticated) connections to remote machines. Unlike
|
|
|
|
SSL (aka TLS), the SSH2 protocol does not require heirarchical certificates
|
|
|
|
signed by a powerful central authority. You may know SSH2 as the protocol that
|
|
|
|
replaced C{telnet} and C{rsh} for secure access to remote shells, but the
|
|
|
|
protocol also includes the ability to open arbitrary channels to remote
|
|
|
|
services across an encrypted tunnel. (This is how C{sftp} works, for example.)
|
|
|
|
|
|
|
|
To use this package, pass a socket (or socket-like object) to a L{Transport},
|
|
|
|
and use L{start_server <paramiko.transport.BaseTransport.start_server>} or
|
|
|
|
L{start_client <paramiko.transport.BaseTransport.start_client>} to negoatite
|
|
|
|
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. I{(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 L{Channel}s to
|
|
|
|
the other side, which are python objects that act like sockets, but send and
|
|
|
|
receive data over the encrypted session.
|
|
|
|
|
|
|
|
Paramiko is written entirely in python (no C or platform-dependent code) and is
|
|
|
|
released under the GNU Lesser General Public License (LGPL).
|
|
|
|
|
|
|
|
Website: U{http://www.lag.net/~robey/paramiko/}
|
|
|
|
|
|
|
|
@version: 0.9 (doduo)
|
|
|
|
@author: Robey Pointer
|
|
|
|
@contact: robey@lag.net
|
|
|
|
@license: GNU Lesser General Public License (LGPL)
|
|
|
|
"""
|
2003-12-26 21:03:44 -05:00
|
|
|
|
|
|
|
import sys
|
|
|
|
|
|
|
|
if (sys.version_info[0] < 2) or ((sys.version_info[0] == 2) and (sys.version_info[1] < 3)):
|
|
|
|
raise RuntimeError('You need python 2.3 for this module.')
|
|
|
|
|
|
|
|
|
|
|
|
__author__ = "Robey Pointer <robey@lag.net>"
|
|
|
|
__date__ = "10 Nov 2003"
|
|
|
|
__version__ = "0.1-charmander"
|
2004-01-04 04:29:13 -05:00
|
|
|
#__credits__ = "Huzzah!"
|
|
|
|
__license__ = "GNU Lesser General Public License (LGPL)"
|
|
|
|
|
|
|
|
|
|
|
|
import transport, auth_transport, channel, rsakey, dsskey, ssh_exception
|
|
|
|
|
|
|
|
Transport = auth_transport.Transport
|
|
|
|
Channel = channel.Channel
|
|
|
|
RSAKey = rsakey.RSAKey
|
|
|
|
DSSKey = dsskey.DSSKey
|
|
|
|
SSHException = ssh_exception.SSHException
|
|
|
|
PasswordRequiredException = ssh_exception.PasswordRequiredException
|
|
|
|
|
|
|
|
|
|
|
|
__all__ = [ 'Transport',
|
|
|
|
'Channel',
|
|
|
|
'RSAKey',
|
|
|
|
'DSSKey',
|
|
|
|
'SSHException',
|
|
|
|
'PasswordRequiredException',
|
|
|
|
'transport',
|
|
|
|
'auth_transport',
|
|
|
|
'channel',
|
|
|
|
'rsakey',
|
|
|
|
'dsskey',
|
|
|
|
'pkey',
|
|
|
|
'ssh_exception',
|
|
|
|
'util' ]
|