支持 ssh-dss 公钥算法的 Python FTP 实用程序

标签 python ftp sftp ftplib pysftp

我正在使用 FTP 连接编写 python 脚本。我无法使用 ftplib.FTP 和 pysftp 连接到 FTP。

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

手动连接:

$ 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

最佳答案

SFTP和FTP是两个完全不相关的协议(protocol)。

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

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

关于支持 ssh-dss 公钥算法的 Python FTP 实用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47991509/

相关文章:

python - 如何从大文件中读取行分隔的 JSON(逐行)

java - 共享网 : How to send a file over FTP using ASCII without changing LF to CRLF

ftp - LFTP,仅下载在我执行 LFTP 的同一天创建的文件

java - 如何在Java中使用SFTP获取目录的最新文件?

python - Arduino与Python串口通信,使用十六进制值的问题

python - 提高优化问题的速度

python - 如果任何脚本有错误,如何停止运行多个python脚本

ssl - 将文件从 Gentran 服务器上传到 box.com FTPS

networking - Golang使用sftp golang库将远程文件复制到本地文件夹

Python ssh 读取镜像