2017-12-27 12 views
0

Ich arbeite an einem Python-Skript mit FTP-Verbindung. Ich kann keine Verbindung zum ftp mit ftplib.FTP und pysftp herstellen.Python FTP-Dienstprogramm, das ssh-dss öffentlichen Schlüsselalgorithmus aktiviert

Manuelle FTP-Verbindung funktioniert, aber ich muss den dss-ssh-Algorithmus aktivieren, der in der aktuellen openSSH-Version standardmäßig deaktiviert ist. Welche Konfiguration fehlt in meinem Skript?

Manuelle Verbindung:

$ sftp -oHostKeyAlgorithms=+ssh-dss ftp_address 

Mein Skript pysftp:

import pysftp 
srv = pysftp.Connection(host=my_host, password=my_pass) 

Stack-Trace:

Traceback (most recent call last): 
    File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py", line 2411, in <module> 
    globals = debugger.run(setup['file'], None, None, is_module) 
    File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py", line 1802, in run 
    launch(file, globals, locals) # execute the script 
    File "/Applications/PyCharm CE.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile 
    exec(compile(contents+"\n", file, 'exec'), glob, loc) 
    File "/ftp_tool.py", line 8, in <module> 
    srv = pysftp.Connection(host=my_host, password=my_pass) 
    File "/ftp_service/venv/lib/python3.4/site-packages/pysftp/__init__.py", line 132, in __init__ 
    self._tconnect['hostkey'] = self._cnopts.get_hostkey(host) 
    File "/ftp_service/venv/lib/python3.4/site-packages/pysftp/__init__.py", line 71, in get_hostkey 
    raise SSHException("No hostkey for host %s found." % host) 
paramiko.ssh_exception.SSHException: No hostkey for host my_host found. 

Python 3.4.3

+1

Vielleicht könnten Sie versuchen, ['paramiko'] (http://docs.paramiko.org/en/2.4/api/sftp.html#module-paramiko.sftp) – mhawke

+0

In der Tat, wie von mhawke und Martin, I gebrauchte Paramiko. Ein anderes Problem, das ich hatte, ist, dass der Hostname nicht durch Paramiko aufgelöst wurde. Momentan verwende ich die IP-Adresse direkt. Ich werde weiter untersuchen, sollte die Zeit es erlauben. – Tsachi

Antwort

1

SFTP und FTP sind zwei völlig unabhängig edierte Protokolle.

Sie können keine Verbindung mit dem FTP-Protokoll (ftplib) zum SFTP-Server herstellen.

pysftp/Paramiko sollte funktionieren. Wenn nicht, poste eine neue Frage speziell zu pysftp/Paramiko mit weiteren Details.

+0

Danke Martin. pysftp funktioniert nicht so gut - ich habe meine Frage so bearbeitet, dass sie den pysftp code + exception enthält. – Tsachi

+1

Sie haben zwei Fragen. Eine über die Auswahl der Bibliothek für SFTP (Ich habe das beantwortet). Und einer über pysftp funktioniert nicht. Das ist eine andere Frage. Denke darüber nach, einen separaten zu fragen. Stellen Sie sicher, dass Sie eine Version von Paramiko und pysftp angeben, die Sie verwenden. –

Verwandte Themen