使用 pysftp 验证主机密钥
本文解决了使用 pysftp 根据known_hosts 文件验证 SSH 主机密钥时遇到的问题。最初的错误是由于 pysftp 在指定位置找不到主机密钥而发生的。
放弃 pysftp 并替代使用 Paramiko
pysftp 库存在以下已知错误主机密钥处理,建议直接使用Paramiko。 Paramiko 为 SSH 连接提供强大且支持良好的 API,包括主机密钥验证。
使用 Paramiko 管理主机密钥
Paramiko 允许对主机进行细粒度控制使用 CnOpts 类进行密钥管理。通过设置 cnopts.hostkeys,您可以管理受信任的主机密钥,并向库提供目标主机所需的密钥。
从已知主机文件加载主机密钥(推荐)
最安全的方法是使用包含受信任主机的公钥的已知主机文件。该文件通常位于 Unix 系统上的 ~/.ssh/known_hosts 中。 CnOpts 类提供了一种从此文件加载主机密钥的便捷方法。
手动添加主机密钥(不推荐)
作为一种不太安全的替代方案,您可以添加使用 HostKeys 类手动主机密钥。这需要从已知的主机文件中提取主机密钥或使用 SSH 直接从服务器获取它。
使用 ssh-keyscan 实用程序进行远程主机密钥检索
ssh-keyscan 实用程序可用于以所需格式检索远程服务器的主机密钥。但是,请注意,如果服务器使用非标准端口,则此方法不起作用。
使用 AutoAddPolicy 自动添加主机密钥(注意)
如果您想要 pysftp要自动将新主机的主机密钥添加到known_hosts,可以使用AutoAddPolicy类。不过,在建立信任之前,请务必谨慎行事并独立验证主机密钥。
获取主机密钥指纹进行指纹验证
为了绝对安全,建议使用手动获取主机密钥指纹并直接验证,而不是依赖远程检索。
以上是使用 pysftp 或 Paramiko 时如何正确验证 SSH 主机密钥?的详细内容。更多信息请关注PHP中文网其他相关文章!