paramiko.ssh_异常.SSHException:应为来自(31,)的包,但得到了94

2024-06-11 11:39:57 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用pysftp-0.2.8向sftp服务发送大文件时。它总是得到同样的错误:paramiko.ssh_异常.SSHException:应为来自(31,)的包,但得到了94

这个文件大约有1.5G,当它在500米处传输时,它会断开。 此处代码:

import pysftp
upftp=FTP(host=ftp_ip, user=ftp_name, passwd=ftp_passwd, acct=ftp_port, timeout=None)
...

try:
    upftp.storbinary('STOR %s'%obj[2], fp, 8192, self.callpecent)      
except Exception as error:
    fp.close()
    self.endit(upftp, 1, '%s,%s'%(obj[2],error), '%s,%s'%(obj[2],error)

此处的错误消息:

^{pr2}$

谢谢你的回答!在


Tags: 文件selfobjparamiko错误ftperrorssh
2条回答

我也有类似的问题-原来这是帕拉米科的一件事。我在他们的GitHub上找到了解决方案https://github.com/paramiko/paramiko/issues/175#issuecomment-24125451This one也有点类似。在

另一个答案指出了正在发生的事情,但没有给出太多的解决办法。对我来说,解决办法可以归结为。。。在

self.ssh_client.connect(...)

#   the important lines
transport = self.ssh_client.get_transport()
transport.default_window_size = 2147483647
transport.packetizer.REKEY_BYTES = pow(2, 40)
transport.packetizer.REKEY_PACKETS = pow(2, 40)
#  -

self.sftp_client = self.ssh_client.open_sftp()
print(self.sft_client.get_channel().in_window_size)
print(sftp_connection.get_channel().in_max_packet_size)

# Output

2147483647
32768

我发现一些有用的东西:)

in the paramiko/packet.py

REKEY_PACKETS = pow(2, 29)
REKEY_BYTES = pow(2, 29)

REKEY_PACKETS_OVERFLOW_MAX = pow(2, 29)     # Allow receiving this many packets after a re-key request before terminating
REKEY_BYTES_OVERFLOW_MAX = pow(2, 29)       # Allow receiving this many bytes after a re-key request before terminating

以及

^{pr2}$

当它使用重键时,它会出错。在

相关问题 更多 >