/usr/lib/python3/dist-packages/twisted/conch
NameSizeModeActions
client/-0755rm
insults/-0755rm
openssh_compat/-0755rm
scripts/-0755rm
ssh/-0755rm
test/-0755rm
ui/-0755rm
__pycache__/-0755rm
avatar.py16410644editdlrm
checkers.py194220644editdlrm
endpoints.py299610644editdlrm
error.py26590644editdlrm
interfaces.py149180644editdlrm
ls.py26930644editdlrm
manhole.py118440644editdlrm
manhole_ssh.py44270644editdlrm
manhole_tap.py54840644editdlrm
mixin.py13730644editdlrm
recvline.py191630644editdlrm
stdio.py27730644editdlrm
tap.py31900644editdlrm
telnet.py380540644editdlrm
ttymodes.py21950644editdlrm
unix.py165500644editdlrm
__init__.py1980644editdlrm
Edit: /usr/lib/python3/dist-packages/twisted/conch/tap.py (3190B)
# -*- test-case-name: twisted.conch.test.test_tap -*- # Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. """ Support module for making SSH servers with twistd. """ from twisted.application import strports from twisted.conch import checkers as conch_checkers, unix from twisted.conch.openssh_compat import factory from twisted.cred import portal, strcred from twisted.python import usage class Options(usage.Options, strcred.AuthOptionMixin): synopsis = "[-i ] [-p ] [-d ] " longdesc = ( "Makes a Conch SSH server. If no authentication methods are " "specified, the default authentication methods are UNIX passwords " "and SSH public keys. If --auth options are " "passed, only the measures specified will be used." ) optParameters = [ ["interface", "i", "", "local interface to which we listen"], ["port", "p", "tcp:22", "Port on which to listen"], ["data", "d", "/etc", "directory to look for host keys in"], [ "moduli", "", None, "directory to look for moduli in " "(if different from --data)", ], ] compData = usage.Completions( optActions={ "data": usage.CompleteDirs(descr="data directory"), "moduli": usage.CompleteDirs(descr="moduli directory"), "interface": usage.CompleteNetInterfaces(), } ) def __init__(self, *a, **kw): usage.Options.__init__(self, *a, **kw) # Call the default addCheckers (for backwards compatibility) that will # be used if no --auth option is provided - note that conch's # UNIXPasswordDatabase is used, instead of twisted.plugins.cred_unix's # checker super().addChecker(conch_checkers.UNIXPasswordDatabase()) super().addChecker( conch_checkers.SSHPublicKeyChecker(conch_checkers.UNIXAuthorizedKeysFiles()) ) self._usingDefaultAuth = True def addChecker(self, checker): """ Add the checker specified. If any checkers are added, the default checkers are automatically cleared and the only checkers will be the specified one(s). """ if self._usingDefaultAuth: self["credCheckers"] = [] self["credInterfaces"] = {} self._usingDefaultAuth = False super().addChecker(checker) def makeService(config): """ Construct a service for operating a SSH server. @param config: An L{Options} instance specifying server options, including where server keys are stored and what authentication methods to use. @return: A L{twisted.application.service.IService} provider which contains the requested SSH server. """ t = factory.OpenSSHFactory() r = unix.UnixSSHRealm() t.portal = portal.Portal(r, config.get("credCheckers", [])) t.dataRoot = config["data"] t.moduliRoot = config["moduli"] or config["data"] port = config["port"] if config["interface"]: # Add warning here port += ":interface=" + config["interface"] return strports.service(port, t)