def get_sftp(hostname, port=22, user='root', keyfile=None, password=None,
keypw=None, pkey=None):
"""Get an SFTP connection using paramiko and plumbum.
"""
def get_transport(**kwargs):
transport = paramiko.Transport(hostname, port)
transport.connect(**kwargs)
return transport
def get_sftp(transport):
return paramiko.SFTPClient.from_transport(transport)
if keyfile:
pkey = pkey or get_pkey(keyfile, password=keypw)
try:
transport = get_transport(username=user, pkey=pkey)
return get_sftp(transport)
except paramiko.ssh_exception.AuthenticationException:
log.warn("Failed to auth ssh with keyfile {}".format(keyfile))
log_message = "Trying SSH connection to {} with credentials {}:{}"
log.info(log_message.format(hostname, user, password))
transport = get_transport(username=user, password=password)
return get_sftp(transport)
评论列表
文章目录