paramiko / paramiko/paramiko

Issue with key-exchange

Open
#174 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
9.9k
Forks
2.1k
PR merge metrics
No merged PRs in 30d

Description

I believe this is related to https://github.com/paramiko/paramiko/pull/63

When using paramiko to retrieve a file via sftp, we are getting the stack below. The error message is paramiko.SSHException: Key-exchange timed out waiting for key negotiation . This only happens with paramiko; other sftp clients pull the same file fine.

I've tried both paramiko-1.7.7.2-py2.7 and paramiko-1.11.0-py2.7, and both behave the same way.

Depending on the time of day, the request either succeeds (typically early morning), or fails somewhere between 500 meg and one gig of transfer.

Traceback (most recent call last):
  File "./tim.py", line 14, in <module>
    sftp.get(SourceFileName,TargetFileName)
  File "build/bdist.solaris-2.10-sun4u.64bit/egg/paramiko/sftp_client.py", line 676, in get
  File "build/bdist.solaris-2.10-sun4u.64bit/egg/paramiko/sftp_client.py", line 653, in getfo
  File "build/bdist.solaris-2.10-sun4u.64bit/egg/paramiko/sftp_file.py", line 64, in close
  File "build/bdist.solaris-2.10-sun4u.64bit/egg/paramiko/sftp_file.py", line 85, in _close
  File "build/bdist.solaris-2.10-sun4u.64bit/egg/paramiko/sftp_client.py", line 688, in _request
  File "build/bdist.solaris-2.10-sun4u.64bit/egg/paramiko/sftp_client.py", line 710, in _async_request
  File "build/bdist.solaris-2.10-sun4u.64bit/egg/paramiko/sftp.py", line 172, in _send_packet
  File "build/bdist.solaris-2.10-sun4u.64bit/egg/paramiko/sftp.py", line 136, in _write_all
  File "build/bdist.solaris-2.10-sun4u.64bit/egg/paramiko/channel.py", line 734, in send
  File "build/bdist.solaris-2.10-sun4u.64bit/egg/paramiko/transport.py", line 1442, in _send_user_message
paramiko.SSHException: Key-exchange timed out waiting for key negotiation

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the reported sftp.get stack trace through paramiko/sftp_client.py, sftp_file.py, sftp.py, channel.py, and transport.py, then reproduce the failure during a large transfer. Read the key-negotiation timeout path and compare behavior across successful and failing transfers. Done means the cause is identified and the reported transfer no longer raises this exception.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.