https://github.com/rspivak/sftpserverを参照として使用して、SFTP サーバーを実装しています。私自身のソリューションを展開する理由は、カスタム認証スキームと、特別な 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の同時接続を処理でき、それぞれが時々データをプッシュします。どうすればこれを達成できますか?