pysft,paramiko,grequests:读取SSH协议bann时出错

2024-04-26 04:47:26 发布

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

我试图从ipython会话打开SFTP连接。但是我的代码

import grequests
import pysftp

sftp = pysftp.Connection(
'ftp.server.com',
port=2255,
username='myname',
private_key='/Users/myname/.ssh/rsa') 

加薪

^{pr2}$

从OSX终端连接到服务器没有问题:

sftp -oPort=2255 -oUser=myname -oPubkeyAuthentication=yes -oIdentityFile=/Users/myname/.ssh/rsa ftp.server.com

我已经尝试将横幅超时从15秒改为60秒运输.py但这并没有解决问题。在

paramiko.SSHException: Error reading SSH protocol banner建议检查横幅,但是我不知道如何使用这些信息来解决问题。在

更新:

问题似乎是由导入包grequests引起的。如果我不导入grequests,pysftp将按预期工作。此问题已提出before,但尚未解决。在


Tags: importcomserveripythonftprsausersssh
3条回答

在主功能中添加monkey补丁,可以解决问题。在

import grequests
import pysftp

###
from gevent import monkey
monkey.patch_all()
###

sftp = pysftp.Connection(
'ftp.server.com',
port=2255,
username='myname',
private_key='/Users/myname/.ssh/rsa') 

正如您的回答:“我已经尝试将横幅超时从15秒更改为60秒运输.py但这并没有解决问题。”

您可以编辑运输.py,但不在安装目录中,它在源代码目录中:

[root@localhost:/data/software/paramiko-1.9]# find . -name transport.py
./paramiko/transport.py
./build/lib/paramiko/transport.py

更改横幅超时,如下所示:

^{pr2}$

那么,重新安装paramiko,就可以解决问题了。在

我使用paramiko连接到SFTP服务器的方法如下。在

from paramiko.client import SSHClient
from paramiko import AutoAddPolicy

client = SSHClient()
client.set_missing_host_key_policy(AutoAddPolicy())

client.connect(hostname=host,
               port=port,
               username=username,
               password=password)

sftp_handle = client.open_sftp()

我之前尝试过使用pysftp,但是{}被证明更强大,更容易与大量文档一起使用。如果有帮助请告诉我。在

相关问题 更多 >