当前位置: 首页 > 面试题库 >

使用pysftp连接到SFTP服务器时出现“无法加载HostKeys”警告

施轶
2023-03-14
问题内容

我编写了一个Python脚本,以使用密钥身份验证连接到SFTP服务器。它成功连接到服务器,但显示以下警告(请参阅下文)。这是什么意思以及如何删除它。必须对代码进行哪些更改?

我的代码:

import os
import pysftp
import socket
import paramiko
import time
import os.path
import shutil

IP = "127.0.X.X"
myUsername = "USERNAME"
port = 22

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None

import os
privatekeyfile = os.path.expanduser("C:\\Users\\Rohan\\.ssh\\cool.prv")
mykey = paramiko.RSAKey.from_private_key_file(privatekeyfile)

try:
    with pysftp.Connection(host=IP, username=myUsername,private_key=mykey,cnopts=cnopts) as sftp:
        try:
            r=str(socket.gethostbyaddr(IP))
            print("connection successful with "+r)

        except socket.herror:
            print("Unknown host")
except:
    print("connection failed")

警告:

UserWarning: Failed to load HostKeys from C:\Users\Rohan\.ssh\known_hosts.  You will need to explicitly load HostKeys (cnopts.hostkeys.load(filename)) or disableHostKey checking (cnopts.hostkeys = None).
  warnings.warn(wmsg, UserWarning)

问题答案:

我相信这是pysftp中的错误。您每次使用时都会得到此cnopts.hostkeys = None提示(尽管警告实际上建议您使用该提示)。

无论如何,您不应该使用cnopts.hostkeys = None,因为这样做会失去安全性。
有关正确的解决方案,请参阅使用pysftp验证主机密钥。

通过参考密钥身份验证,我假设您将您的帐户密钥与主机密钥相混淆。阅读有关SSH密钥对的文章,以了解它们之间的区别。



 类似资料:
  • 我遇到了一种奇怪的情况,第一次需要连接到SFTP服务器,但似乎找不到访问该服务器已知主机条目的方法。如果我说: 但显然这让你容易受到中间人的攻击。因此,我尝试连接: 我会收到各种各样的错误信息。最近的一次是: 我运气不好吗?我是不是应该绕过钥匙检查?

  • 问题内容: 我处于一种奇怪的情况下,我需要第一次连接到SFTP服务器,但似乎找不到找到访问该服务器的已知主机条目的方法。如果我可以连接很好说: 但显然,这会让您在中间攻击时对男人敞开怀抱。所以我尝试连接: 而且我得到各种错误消息。最近的是: paramiko.hostkeys.InvalidHostKey 问题是我没有主机密钥,因为我是第一次连接。我试图从其他连接中获取密钥。我使用WinSCP,但

  • --状态:连接到10.10.10.04:21... 状态:连接已建立,正在等待欢迎消息... 状态:正在初始化TLS... 状态:正在验证证书... 状态:TLS连接已建立。 状态:已登录 状态:正在检索目录列表... 状态:“/”的目录列表成功

  • 在我的C#项目中,为了连接到SFTP服务器,我包含了。目前,我尝试实现一个简单的连接方法,如下所示: 已连接,但无法接收来自FTP服务器的问候语。 根据Chilkat的文件。 我错过了什么?我尝试连接到一个简单的ftp服务器测试(没有SSL/TLS),它连接正确,所以我想我错过了什么。当我尝试用Filezilla连接到SFTP服务器时,给出的凭据是正确的。谢谢你。 更新

  • 我试图在shell脚本中运行下面的命令,但遇到了如下错误:错误:无法找到或加载主类weblogic。管理 ${SUN\u JAVA\u HOME}/bin/JAVA-classpath$classpath-weblogic。Admin-url t3://localhost:7001-用户名weblogic-密码weblogic123 PING 有人能对此发表评论吗