我最近开始使用twisted,我正在尝试创建一个连接并向SSH服务器发送命令的客户端。 (我只创建客户端并使用一些SSH服务器来测试它)。 发送10个命令(例如' ls'命令)并接收每个命令的答案后,我的客户端被阻止。有人可以帮我找到解决方案吗?这是我客户最重要的部分。 PS:我正在使用twisted 12.0.0(msi二进制文件)。
.eml
答案 0 :(得分:0)
问题是服务器阻止了会话号10: " [在SimpleTransport上的SSHService ssh-connection上的SSHChannel会话(10),客户端]另一方拒绝打开 原因:('打开失败',1)"。 这是正常行为,(sshd_config中的MaxSessions指定每个网络连接允许的最大打开会话数设置为10)。
SSHChannel在运行命令后总是自行关闭。因此,在旧通道关闭后,应为新命令创建新通道。以下是我的客户最重要的部分:
class SimpleConnection(connection.SSHConnection):
def serviceStarted(self):
self.openChannel(CommandChannel(conn=self))
class CommandChannel(channel.SSHChannel):
name = 'session'
def channelOpen(self, data):
global command
command = "ls"
d = self.conn.sendRequest(self, 'exec', common.NS(command), wantReply=True)
d.addCallback(self.dataReceived)
def dataReceived(self, data):
print (data)
def closed(self):
self.conn.serviceStarted()