2014-09-22 1 views
1

로컬 컴퓨터에서 proftpd를 사용하여 SFTP 서버를 설정했습니다. 약 30000 자보다 큰 파일을 업로드 할 때 시간 초과된다는 점을 제외하고는 정상적으로 작동합니다.paramiko를 통해 큰 파일을 proftpd에 업로드하면 시간이 초과됩니다.

proftpd를 통해 명령 줄에서 업로드해도 문제없이 작동하며, paramiko를 사용하여 다른 SFTP 서버에 업로드해도 작동합니다. 이것은 paramiko와 proftpd 사이의 상호 작용에 특별히 버그가 있다고 생각하게합니다.

내가 문제를 설명하기 위해 작은 스크립트를했습니다

:

import paramiko 

transport = paramiko.Transport(('localhost', 2220)) # my proftpd SFTP port 
transport.connect(username='x', password='x') 
client = paramiko.SFTPClient.from_transport(transport) 
with open('testimage.jpg') as f: # 35241 characters 
    content = f.read() 
with client.open('testimage.jpg', 'w') as f: 
    f.write(content) 

내 SFTP 특정 proftpd에 구성 :

<IfModule mod_sftp.c> 
    <VirtualHost 0.0.0.0> 
     Include   /etc/proftpd/conf.d 
     SFTPEngine   on 
     SFTPLog   /var/log/proftpd/sftp.log 
     Port    2220 
     SFTPHostKey  /etc/ssh/ssh_host_rsa_key 
     SFTPHostKey  /etc/ssh/ssh_host_dsa_key 
     SFTPAuthMethods password 
     SFTPCompression delayed 
     MaxLoginAttempts 3 
    </VirtualHost> 
</IfModule> 

10 분 후, 프로그램이 종료하고이 오류를 뱉어 : 1.15와 proftpd에 1.3.5

paramiko 사용

Traceback (most recent call last): 
    File "ftptest.py", line 9, in <module> 
    f.write(content) 
    File "/Library/Python/2.7/site-packages/paramiko/file.py", line 330, in write 
    self._write_all(data) 
    File "/Library/Python/2.7/site-packages/paramiko/file.py", line 447, in _write_all 
    count = self._write(data) 
    File "/Library/Python/2.7/site-packages/paramiko/sftp_file.py", line 176, in _write 
    self._reqs.append(self.sftp._async_request(type(None), CMD_WRITE, self.handle, long(self._realpos), data[:chunk])) 
    File "/Library/Python/2.7/site-packages/paramiko/sftp_client.py", line 668, in _async_request 
    self._send_packet(t, msg) 
    File "/Library/Python/2.7/site-packages/paramiko/sftp.py", line 170, in _send_packet 
    self._write_all(out) 
    File "/Library/Python/2.7/site-packages/paramiko/sftp.py", line 135, in _write_all 
    raise EOFError() 
EOFError 

답변

0

기본 창 크기 4GB는 paramiko에 비해 너무 커서 데이터 전송이 중단됩니다.
SFTPClientMatch ".*" channelWindowSize 3999MB

:

문제

는 proftpd에의 SFTP 구성이를 추가하여 해결되었습니다
관련 문제