python - pysftp/Paramiko 中的“类型对象‘EllipticCurvePublicKey’没有属性‘from_encoded_point’”
问题描述
我在 DigitalOcean 上运行 Ubuntu 18.04 droplets,需要设置它们之间的文件传输。
Pysftp/Paramiko 库很适合这项工作,但我无法建立连接。从桌面连接相同的代码效果很好。
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
with pysftp.Connection(host='ip adress', username='username',
password='pass', cnopts=cnopts) as sftp:
初始化连接时的错误消息是:
Traceback (most recent call last):
File "/home/airflow/airflow/tasks/ta_auto/screener_slave.py", line 315, in <module>
cnopts = pysftp.CnOpts()#knownhosts='/home/airflow/.ssh/known_hosts')
File "/home/airflow/pipeline/lib/python3.6/site-packages/pysftp/__init__.py", line 54, in __init__
self.hostkeys.load(knownhosts)
File "/home/airflow/pipeline/lib/python3.6/site-packages/paramiko/hostkeys.py", line 101, in load
e = HostKeyEntry.from_line(line, lineno)
File "/home/airflow/pipeline/lib/python3.6/site-packages/paramiko/hostkeys.py", line 364, in from_line
key = ECDSAKey(data=decodebytes(key), validate_point=False)
File "/home/airflow/pipeline/lib/python3.6/site-packages/paramiko/ecdsakey.py", line 163, in __init__
key = ec.EllipticCurvePublicKey.from_encoded_point(
AttributeError: type object 'EllipticCurvePublicKey' has no attribute 'from_encoded_point'
解决方案
升级到最新版本的 Paramiko – 2.6 截至目前。
这很可能与以下问题相同:
How to quiet EllipticCurvePublicNumbers.encode_point CryptographyDeprecationWarning when using Paramiko in Python。
强制警告:不要设置cnopts.hostkeys = None
,除非你不关心安全。有关正确的解决方案,请参阅使用 pysftp 验证主机密钥。
推荐阅读
- angular - 我有一个“过滤器”功能,它假设根据名称过滤来自 Firestore 的数据。我能够从 firestore 获取全部数据
- javascript - 如何在文本区域内添加表情符号或图像图标?
- javascript - Ckeditor 工具栏项目在 Vue (Laravel) 中不可用
- python - 有什么方法可以绘制印度地图吗?
- javascript - ios os 中没有显示视频
- regex - 正则表达式灾难性回溯
- java - 为什么向上转换到父抽象类不起作用
- android - Ubuntu 或 Windows 上的 Packet Sender 等应用程序不接收从 Android Server Socket 发送的消息
- android - 如何将 ViewModelScope 等异步协程范围的值返回到您的 UI?
- amazon-web-services - AWS Elastic Beanstalk 负载均衡器问题