merge patch from Dwayne Litzenberger that lets you ask an SSHClient not to
try agent-based auth.
This commit is contained in:
Robey Pointer 2008-02-17 20:59:00 -08:00
parent d81e0038d2
commit cb3a0a4c3d
1 changed files with 16 additions and 12 deletions

View File

@ -213,7 +213,7 @@ class SSHClient (object):
self._policy = policy self._policy = policy
def connect(self, hostname, port=22, username=None, password=None, pkey=None, def connect(self, hostname, port=22, username=None, password=None, pkey=None,
key_filename=None, timeout=None): key_filename=None, timeout=None, allow_agent=True):
""" """
Connect to an SSH server and authenticate to it. The server's host key Connect to an SSH server and authenticate to it. The server's host key
is checked against the system host keys (see L{load_system_host_keys}) is checked against the system host keys (see L{load_system_host_keys})
@ -249,7 +249,9 @@ class SSHClient (object):
@type key_filename: str @type key_filename: str
@param timeout: an optional timeout (in seconds) for the TCP connect @param timeout: an optional timeout (in seconds) for the TCP connect
@type timeout: float @type timeout: float
@param allow_agent: set to False to disable connecting to the SSH agent
@type allow_agent: bool
@raise BadHostKeyException: if the server's host key could not be @raise BadHostKeyException: if the server's host key could not be
verified verified
@raise AuthenticationException: if authentication failed @raise AuthenticationException: if authentication failed
@ -288,7 +290,8 @@ class SSHClient (object):
if username is None: if username is None:
username = getpass.getuser() username = getpass.getuser()
self._auth(username, password, pkey, key_filename)
self._auth(username, password, pkey, key_filename, allow_agent)
def close(self): def close(self):
""" """
@ -364,7 +367,7 @@ class SSHClient (object):
""" """
return self._transport return self._transport
def _auth(self, username, password, pkey, key_filename): def _auth(self, username, password, pkey, key_filename, allow_agent):
""" """
Try, in order: Try, in order:
@ -394,14 +397,15 @@ class SSHClient (object):
return return
except SSHException, e: except SSHException, e:
saved_exception = e saved_exception = e
for key in Agent().get_keys(): if allow_agent:
try: for key in Agent().get_keys():
self._log(DEBUG, 'Trying SSH agent key %s' % hexlify(key.get_fingerprint())) try:
self._transport.auth_publickey(username, key) self._log(DEBUG, 'Trying SSH agent key %s' % hexlify(key.get_fingerprint()))
return self._transport.auth_publickey(username, key)
except SSHException, e: return
saved_exception = e except SSHException, e:
saved_exception = e
keyfiles = [] keyfiles = []
rsa_key = os.path.expanduser('~/.ssh/id_rsa') rsa_key = os.path.expanduser('~/.ssh/id_rsa')