트위스티드 Conch로 SSH 서버를 작성합니다. 그러나 어려운 문제가 발생했습니다. 사용자 A와 사용자 B가 ssh 명령을 통해 트위스트 된 ssh 서버에 로그인한다고 가정합니다. 그런 다음 사용자 꼬리 또는 꼬리표 고양이가 큰 파일 (100M 이상), 트위스트 ssh 서버를 통해 에코 많은 원인이 될 것입니다, 파이썬 ssh 프로세스 (twisted.conch) cpu 사용법을 만드는 것은 매우 높습니다 (95 % , 또는 심지어 100 %), 사용자 B는 차단 될 것이며 오랜 시간 응답이 없습니다. 사용자 A가 꼬인 ssh 서버를 통해 많은 수의 에코를 갖고 있고 다른 연결된 사용자를 차단하지 않으면 userA의 세션을 잠글 수있는 방법이 있습니까 (0.5 초).많은 수의 에코가있을 때 파이썬 SSH 서버 (twisted.conch)가 높은 CPU 사용량을 차지합니다.
import sys
import checkers
from twisted.python import components, log, logfile
from twisted.cred import portal
from twisted.internet import reactor
from twisted.conch.ssh import factory, keys, session, filetransfer
from twisted.conch.unix import UnixSSHRealm, SSHSessionForUnixConchUser, UnixConchUser
import keyvalue
if __name__ == "__main__":
sshFactory = factory.SSHFactory()
sshFactory.portal = portal.Portal(UnixSSHRealm())
sshFactory.portal.registerChecker(checkers.UsernamePasswordChecker())
sshFactory.publicKeys = {
'ssh-rsa': keys.Key.fromString(keyvalue.publicKey)}
sshFactory.privateKeys = {
'ssh-rsa': keys.Key.fromString(keyvalue.privateKey)}
components.registerAdapter(
SSHSessionForUnixConchUser, UnixConchUser, session.ISession)
log.startLogging(sys.stdout)
reactor.listenTCP(2222, sshFactory)
reactor.run()