错误:pysftp 中的“无法加载主机密钥”[重复]
Posted
技术标签:
【中文标题】错误:pysftp 中的“无法加载主机密钥”[重复]【英文标题】:Error: 'failed to load hostkey' in pysftp [duplicate] 【发布时间】:2021-12-19 03:55:17 【问题描述】:我正在尝试使用 python pysftp 库从 SFTP 服务器和本地服务器(窗口)复制文件。 我正在使用 usrname 和密码验证 sftp 服务器,并且没有 SSH-Host 密钥。
我的代码正在运行并将文件复制到本地目录,但仍然收到有关 HostKeys 的警告消息。
import pysftp
import sys
import csv
import json, os
from pysftp import known_hosts
import warnings
warnings.simplefilter(action='ignore',category=UserWarning)
myHostname = "exmaple.com"
myUsername = "user"
myPassword = "foo"
data = []
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
try:
with pysftp.Connection(host=myHostname, username=myUsername, password=myPassword, port=22, cnopts=cnopts ) as sftp:
print ("Connection succesfully stablished ... ")
#cnopts=cnopts
# Define the file that you want to download from the remote directory
remoteFilePath = '/rcv'
os.chdir("gpgencrypted")
file = sftp.get_d(remoteFilePath,'',preserve_mtime=True)
print("File copied to mid-server successfully")
except ValueError:
print("File Transfer was unsuccessful")
这是输出中的警告错误。我在代码中设置无主机键,但仍然出现警告消息
Warning (from warnings module):
File "C:\Program Files\Python39\lib\site-packages\pysftp\__init__.py", line 61
warnings.warn(wmsg, UserWarning)
UserWarning: Failed to load HostKeys from C:\Users\kiran.patil\.ssh\known_hosts. You will need to explicitly load HostKeys (cnopts.hostkeys.load(filename)) or disableHostKey checking (cnopts.hostkeys = None).
Connection succesfully stablished ...
None
编辑 1: 添加了警告过滤器以跳过 UserWarning。理想情况下应该使用主机密钥,但现在我没有 sftp 主机密钥,但在我们投入生产之前我肯定会使用主机密钥。
【问题讨论】:
看起来只是一个警告 如何抑制警告? 尝试配置警告docs.python.org/3/library/warnings.html 【参考方案1】:添加了警告过滤器以跳过用户警告。理想情况下应该使用主机密钥,但现在我没有 sftp 主机密钥,但在我们投入生产之前我肯定会使用主机密钥
import pysftp
import sys
import csv
import json, os
from pysftp import known_hosts
import warnings
warnings.simplefilter(action='ignore',category=UserWarning)
myHostname = "example.coom"
myUsername = "useer"
myPassword = "foo"
data = []
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
try:
with pysftp.Connection(host=myHostname, username=myUsername, password=myPassword, port=22, cnopts=cnopts ) as sftp:
print ("Connection succesfully stablished ... ")
#cnopts=cnopts
# Define the file that you want to download from the remote directory
remoteFilePath = '/rcv'
os.chdir("gpgencrypted")
file = sftp.get_d(remoteFilePath,'',preserve_mtime=True)
print("File copied to mid-server successfully")
except ValueError:
print("File Transfer was unsuccessful")
【讨论】:
“我没有 sftp 主机密钥” – 你是什么意思?你当然知道。 我使用腻子找到了密钥,但不知道如何在代码中使用文件。我在窗口服务器上运行脚本。许多其他文档都包含在基于 linux 的系统中。 我对重复问题的回答中有一个链接:Verify host key with pysftp。以上是关于错误:pysftp 中的“无法加载主机密钥”[重复]的主要内容,如果未能解决你的问题,请参考以下文章
从 aws-lambda 导入 pysftp 时如何修复导入错误“没有名为 '_cffi_backend' 的模块”
Pysftp "cd" 对 AIX 服务器失败,并出现 "OverflowError: mode out of range" 错误