ipython セッションから SFTP 接続を開こうとしています。しかし、私のコード
import grequests
import pysftp
sftp = pysftp.Connection(
'ftp.server.com',
port=2255,
username='myname',
private_key='/Users/myname/.ssh/rsa')
上げる
Traceback (most recent call last):
File "/Users/myname/reporting-python/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 3066, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-11-82bba0e75aee>", line 5, in <module>
private_key='/Users/myname/.ssh/rsa') # TODO: adjust key path
File "/Users/myname/reporting-python/lib/python2.7/site-packages/pysftp.py", line 187, in __init__
self._transport.connect(username=username, pkey=prv_key)
File "/Users/myname/reporting-python/lib/python2.7/site-packages/paramiko/transport.py", line 1072, in connect
self.start_client()
File "/Users/myname/reporting-python/lib/python2.7/site-packages/paramiko/transport.py", line 492, in start_client
raise e
SSHException: Error reading SSH protocol bannerThis operation would block forever
OSX ターミナルからサーバーに接続すると、問題なく動作します。
sftp -oPort=2255 -oUser=myname -oPubkeyAuthentication=yes -oIdentityFile=/Users/myname/.ssh/rsa ftp.server.com
transport.py でバナーのタイムアウトを 15 秒から 60 秒に変更しようとしましたが、問題は解決しませんでした。
paramiko.SSHException: SSH プロトコル バナーの読み取りエラーで、バナーを調べるように提案されましたが、この情報を使用して問題を解決する方法がわかりませんでした。
アップデート:
パッケージgrequestsをインポートすることによって問題が発生しているようです。grequest をインポートしない場合、pysftp は期待どおりに動作します。この問題は以前に提起されましたが、解決されていません。