2017-12-27 269 views
0

我使用FTP连接处理python脚本。我无法通过ftplib.FTP和pysftp连接到FTP。启用ssh-dss公钥算法的Python FTP util

手动FTP连接有效,但我必须启用在当前openSSH版本中默认禁用的dss-ssh算法。 脚本中缺少哪种配置?

手动连接:

$ sftp -oHostKeyAlgorithms=+ssh-dss ftp_address 

我的脚本中使用pysftp:

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

堆栈跟踪:

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

也许你可以试试['paramiko'](http://docs.paramiko.org/en/2.4/api/sftp.html#module-paramiko.sftp) – mhawke

+0

的确,根据mhawke和Martin的指示,我使用paramiko。 我的另一个问题是主机名未由paramiko解决。 现在我直接使用IP地址。 如果时间允许,我会进一步调查。 – Tsachi

回答

1

SFTP和FTP两种完全没有关系编辑协议。

您无法使用FTP协议(ftplib)连接到SFTP服务器。

pysftp/Paramiko应该工作。如果没有,请发布一个关于pysftp/Paramiko的新问题,并提供更多详细信息。

+0

谢谢Martin。 pysftp不起作用 - 我编辑了我的问题以包含pysftp代码+异常。 – Tsachi

+1

你有两个问题。一个关于为SFTP选择库(我已经回答)。还有一个关于pysftp不起作用的问题。这是一个不同的问题。考虑另外一个问题。并确保您指定了您正在使用的Paramiko和pysftp的版本。 –