gpt4 book ai didi

python - 使用 key 的扭曲 ssh 服务器身份验证

转载 作者:行者123 更新时间:2023-11-28 16:36:54 28 4
gpt4 key购买 nike

这是一个简单的扭曲应用程序:

from twisted.cred import checkers, portal
from twisted.conch import manhole, manhole_ssh
from twisted.conch.insults import insults

from twisted.application import service, internet
from twisted.internet import endpoints, reactor


def makeManholeService(namespace):
checker = checkers.InMemoryUsernamePasswordDatabaseDontUse(
username="password")

realm = manhole_ssh.TerminalRealm()
realm.chainedProtocolFactory = lambda: insults.ServerProtocol(
manhole.ColoredManhole, namespace)
prt = portal.Portal(realm, [checker])
factory = manhole_ssh.ConchFactory(prt)

endp = endpoints.serverFromString(reactor, 'tcp:6022')

manholeService = internet.StreamServerEndpointService(endp, factory)
return manholeService


application = service.Application("my app")
manholeService = makeManholeService({'foo': 'bar'})
manholeService.setServiceParent(application)

我们可以通过 ssh 连接到它:

$ ssh username@localhost -p 6022
username@localhost's password:

>>> foo
'bar'
>>>

现在我想替换 InMemoryUsernamePasswordDatabaseDontUse 以便服务器可以对使用 rsa/dsa key 标识自己的用户进行身份验证。

我必须实现检查器吗?

例如,我在~/.ssh/authorized_keys 中列出了一些公钥。 SSH 服务器应拒绝所有连接,但可以使用该文件中的公钥验证的连接除外。

最佳答案

是的,你需要做一个检查器。但是,您可以在 Conch 中使用一些构建 block ,这应该会使它变得非常简单。 Ying Li 有一个示例项目“ess”(没有“SH”的“SSH”)implements some checkers您可能有兴趣查看。

关于python - 使用 key 的扭曲 ssh 服务器身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24956263/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com