我正在实现一个 SFTP 服务器,使用https://github.com/rspivak/sftpserver作为参考。推出我自己的解决方案的原因是自定义身份验证方案和特殊的 chrooting 和黑/白名单标准。
我现在的问题是一次处理多个连接。我当前的循环如下所示:
# Wait for a connection
conn, addr = server_socket.accept()
# Open a transport for this connection
tr = Transport(conn)
# Load our private host key
key = RSAKey.from_private_key_file("sftp.key")
tr.add_server_key(key)
# Tell server to support SFTP
tr.set_subsystem_handler("sftp", SFTPServer, sftp.ChrootedSFTP)
# Start a SSH server for this connection and serv it
server = auth.ChrootedAuthServer(db_factory, "/path/to/chroot")
tr.start_server(server=server)
# Wait for client to establish SSH connection
ch = tr.accept()
我的解决方案不必非常快。只能处理大约 10 个同时连接,每个连接每隔一段时间推送一次数据。我该如何做到这一点?