Connexion SFTP avec clé privée
Bonjour,
Je souhaite effectuer un connexion SFTP afin d'upload un fichier sur le serveur SFTP avec password, clé privée et password sur la clé privée via pysftp or il m'est impossible d’établir cette connexion pour des raisons que j'ignore.
Mon code se présente comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
class SFTPUtils():
def __init__(self, sftp_name, sftp_conf):
try:
self.conn = pysftp.Connection(host = sftp_conf['host'],
username = sftp_conf['user'],
private_key = sftp_conf['private_key'],
password = sftp_conf['pass'],
port = sftp_conf['port'],
private_key_pass = sftp_conf['private_key_pass'])
except Exception as e:
self.conn = None
logger.error('Could not connect to {}'.format(sftp_name))
logger.debug(e)
raise e
def upload_file(self, local_path, remote_path):
logger.debug('upload_file method...')
logger.debug('dumping conn_info:')
logger.debug(self.conn)
try :
self.conn.put(local_path, remote_path)
except TimeoutError:
logger.error('Cant connect to FTP')
return False
logger.info('User uploaded file %s' % (local_path))
return True |
Cependant j'obtiens l'erreur : "SSHException No hostkey for host xx.xx.xx.xx found."
Si quelqu'un a une piste ou la solution, je suis preneur :)
Cordialement,
problème transfert fichier windows vers linux pysftp python 2.7
Bonsoir,
Je rencontre un peu le même problème pour le transfert de fichier avec pysftp.
Je souhaite transférer un fichier depuis un serveur WS2k16 vers vers un serveur Linux à l'aide de python 2.7 et la librairie pysftp.
Voici mon bout de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import pysftp
def uploadZip(localFile,remoteFile,remoteServerName,remoteUsername,private_key_path):
try:
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
#with pysftp.Connection(host=remoteServerName, username=remoteUsername, private_key=private_key_path, cnopts=cnopts) as sftp:
with pysftp.Connection(host=remoteServerName, username=remoteUsername, private_key=private_key_path, cnopts=cnopts) as sftp:
sftp.put(localFile,remoteFile)
except Exception, e:
print('Echec du transfert du fichier "{}" sur "{}"'.format(localFile,remoteServerName))
print('Erreur : {}'.format(e))
localFile = r'C:\Users\test.arcgis\Desktop\info sftp.txt'
remoteFile = '/depot/transfert/arcgis/integration/test.txt'
remoteServerName = 'xxx.xxx.xxx.xxx'
remoteUserName = 'user'
private_key_path = r'chemin\vers\cle\privee.ppk'
uploadZip(localFile,remoteFile,remoteServerName,remoteUserName,private_key_path) |
lors de l'exécution du script voici l'erreur qui m'est retournée
Code:
Erreur : not a valid DSA private key file
Auriez vous une idée de ce qu'il faut faire ? j'ai lu qu'il fallait créer sur le serveur windows un répertoire .ssh dans le dossier de l'utilisateur (ici test.arcgis) et créer un fichier known_hosts à l'intérieur.
merci d'avance de votre aide