问题:
使用pysftp建立SFTP连接时,遇到错误由于known_hosts 文件中缺少主机密钥。终端程序 Putty 将主机密钥存储在 Windows 注册表中,这与 pysftp 的预期位置不同。
解决方案:
pysftp 对主机密钥的处理存在已知限制。考虑直接过渡到 Paramiko,因为它在主机密钥管理方面提供了更大的灵活性。
对于 pysftp 用户,请避免设置 cnopts.hostkeys = None,因为它会通过禁用主机密钥验证来损害安全性。
使用 CnOpts.hostkeys 管理受信任的主机密钥。指定包含服务器公钥的known_hosts 文件或使用CnOpts 手动添加密钥。
另一种方法是使用SSH 的ssh-keyscan 工具检索主机密钥并将其添加到known_hosts 文件中。虽然方便,但这种方法有局限性,例如不适用于非标准服务器端口。
为了增强安全性,请从受信任的来源(例如服务器管理员)获取主机密钥,以防止攻击者拦截密钥并模拟服务器。
如果需要基于指纹的主机密钥验证,请参阅使用 pysftp 或 Paramiko 实现此类验证的文档。
以上是使用 pysftp 时如何安全验证主机密钥?的详细内容。更多信息请关注PHP中文网其他相关文章!