为了账号安全,请及时绑定邮箱和手机立即绑定

使用 pysftp 进行键盘交互式身份验证时出现 EOFError

使用 pysftp 进行键盘交互式身份验证时出现 EOFError

互换的青春 2024-01-24 15:52:55
我正在尝试从 SFTP 服务器下载一些文件。我使用这个代码:keydata = b"""AAAAB3Nza.............CNpvoUP7p"""key = paramiko.RSAKey(data=decodebytes(keydata))cnopts = pysftp.CnOpts()cnopts.hostkeys.add(host, 'ssh-rsa', key)host = 'sftp.foo.com'username = 'test'password = 'test'with pysftp.Connection(host=host, username=username, password=password, cnopts=cnopts) as sftp:    sftp.listdir()    .....但我收到以下错误:Exception raised:    Traceback (most recent call last):      File "/home/myuser/src/ftp-data/ftp_data/downloader_v2.py", line 25, in main        sftp.listdir()      File "/home/myuser/environments/python3.5.2_ubuntu16.04/lib/python3.5/site-packages/pysftp/__init__.py", line 591, in listdir        self._sftp_connect()      File "/home/myuser/environments/python3.5.2_ubuntu16.04/lib/python3.5/site-packages/pysftp/__init__.py", line 205, in _sftp_connect        self._sftp = paramiko.SFTPClient.from_transport(self._transport)      File "/home/myuser/environments/python3.5.2_ubuntu16.04/lib/python3.5/site-packages/paramiko/sftp_client.py", line 165, in from_transport        window_size=window_size, max_packet_size=max_packet_size      File "/home/myuser/environments/python3.5.2_ubuntu16.04/lib/python3.5/site-packages/paramiko/transport.py", line 879, in open_session        timeout=timeout,      File "/home/myuser/environments/python3.5.2_ubuntu16.04/lib/python3.5/site-packages/paramiko/transport.py", line 1006, in open_channel        raise e      File "/home/myuser/environments/python3.5.2_ubuntu16.04/lib/python3.5/site-packages/paramiko/transport.py", line 2055, in run        ptype, m = self.packetizer.read_message()      File "/home/myuser/environments/python3.5.2_ubuntu16.04/lib/python3.5/site-packages/paramiko/packet.py", line 459, in read_message        header = self.read_all(self.__block_size_in, check_rekey=True)        raise EOFError()    EOFError相同的代码可以在我尝试过的其他 SFTP 主机上正常运行。我还可以使用命令行(Ubuntu)正确下载文件sftp。listdir()如果我替换为pwd()or cd().... ,我会得到同样的错误。我使用以下版本:paramiko==2.7.2 和 pysftp==0.2.9我在这里缺少什么?
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

但是当您使用 pysftp 时,我认为您无法解决它,因为我认为 pysftp API 不允许这样做。您可能必须直接使用 Paramiko。


查看完整回答
反对 回复 2024-01-24
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信