7

私のコード:

import pysftp 
s = pysftp.Connection(host='test.rebex.net', username='demo', password='password') 
data = s.listdir() 
s.close() 
for i in data: 
    print i

pysftp を使用して SFTP サーバーに接続しようとするとエラーが発生します。

これは簡単なはずですが、以下のエラーが表示されます。

Traceback (most recent call last):
  File "/Users/gavinhinfey/Documents/Python Files/sftp_test.py", line 3, in <module>
    s = pysftp.Connection(host='test.rebex.net', username='demo', password='password')
  File "build/bdist.macosx-10.6-intel/egg/pysftp.py", line 55, in __init__
  File "build/bdist.macosx-10.5-intel/egg/paramiko/transport.py", line 303, in __init__
paramiko.SSHException: Unable to connect to test.rebex.net: [Errno 60] Operation timed out
Exception AttributeError: "'Connection' object has no attribute '_tranport_live'" in <bound     method Connection.__del__ of <pysftp.Connection object at 0x101a5a810>> ignored

さまざまなバージョンの python (主に 2.7) を使用してみました。すべての依存関係がインストールされており、多数の sftp 接続を試しました。OS X 10.9.1 を使用しています。

4

3 に答える 3

15

パッケージはすでに最新のものであったため、パッケージの更新は機能しませんでした(少なくともpython 2.7の最新版)。

ここでより良いアプローチを見つけました。

1) 手動で ssh キーを known_hosts ファイルに追加できます

ssh test.rebex.net

2)または、フラグを設定して無視することもできます

import pysftp
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None    # disable host key checking.
with pysftp.Connection('host', username='me',private_key=private_key,
                           private_key_pass=private_key_password,
                           cnopts=cnopts) as sftp
    # do stuff here
于 2016-07-13T14:53:11.753 に答える
6

その初期エラーは、リモート サーバーとの接続に問題があるようです (SSHException)。2 つ目 (AttributeError) は、接続が失敗したときに発生するコードのバグによるものです。pysftpの最新バージョンで修正されています

https://pypi.python.org/pypi/pysftp

pip install -U pysftp

あなたの友達です。

于 2014-05-15T17:39:27.890 に答える
-1

@Martin.Prikryl: hostkeys = None の設定は、pysftp を使用したコーディングの初期段階で非常に役立ちます。既知の例外で失敗し続けるプログラムをデバッグすると、注意が必要な他の問題 (実際の接続など) が見えなくなります。コードが実際に正しく機能していることがわかれば、後で「中間者」の問題に対処できます。

@All: 現在の pysftp.CnOpts() オブジェクトにはバグがあるようです:

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None

上記のコードは、ホスト キーのチェックを妨げません。

python getfile_v3.py --help トレースバック (最新の呼び出しが最後): ファイル "getfile_v3.py"、9 行目、cnopts = pysftp.CnOpts() ファイル "c:\Program Files\Python\Python38\lib\site-packages \pysftp_ init _.py"、64 行目、init raise HostKeysException('No Host Keys Found') pysftp.exceptions.HostKeysException: No Host Keys Found

最初の行はデフォルトでホスト キーのチェックを行うため、2 行目は実行されません。キーを次のように設定した場合:

      cnopts = pysftp.CnOpts(hostkeys=None)

同じエラーが発生します。

「hostkeys」は廃止されたようで、ホスト キー チェックを無効にする方法はありません。

ジョー・ホワイト

于 2021-02-04T16:21:15.457 に答える