You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pysftp设置hostkeys=None仍报failed to load hostkey警告如何解决

警告仍弹出的原因

该警告是在pysftp.CnOpts()类初始化阶段触发的,早于你后续执行cnopts.hostkeys = None的赋值操作:CnOpts默认会先尝试读取系统默认路径下的known_hosts文件,读取失败就会立即抛出警告,你设置的hostkeys = None只是关闭后续连接的主机密钥校验,没法阻止初始化阶段的警告输出。
另外你已经配置的UserWarning过滤器未生效,大概率是pysftp内部抛出警告时指定了特殊的stacklevel,或者是模块导入阶段的警告触发时机早于过滤器生效时机导致的。

彻底消除警告的解决方法

方法1:初始化CnOpts时直接指定不加载主机密钥(最稳妥)

直接在实例化CnOpts时传入knownhosts=None参数,从根源上跳过默认known_hosts文件的加载逻辑,不会触发警告:

# 替换原来的cnopts初始化代码即可,不需要额外赋值cnopts.hostkeys = None
cnopts = pysftp.CnOpts(knownhosts=None)

这个方法不需要修改警告过滤器,也不会误屏蔽其他正常的UserWarning。

方法2:精准过滤pysftp的主机密钥警告

如果不想修改CnOpts初始化逻辑,可以调整警告过滤器的配置,精准匹配该警告内容:

import warnings
# 精准匹配pysftp的主机密钥加载失败警告,不会影响其他UserWarning
warnings.filterwarnings('ignore', message='Failed to load HostKeys')

两种方法任选其一即可解决警告弹出问题。

注意:你当前关闭主机密钥校验的方案仅适合临时测试使用,正式上线前请务必配置合法的主机密钥校验,避免中间人攻击风险。

内容的提问来源于stack exchange,提问作者snowcoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:06:00