merge patch from Dwayne Litzenberger that lets you ask an SSHClient not to try agent-based auth.
This commit is contained in:
parent
d81e0038d2
commit
cb3a0a4c3d
|
@ -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')
|
||||||
|
|
Loading…
Reference in New Issue