当前位置:  开发笔记 > 编程语言 > 正文

Python - 如何使用Conch创建虚拟SSH服务器

如何解决《Python-如何使用Conch创建虚拟SSH服务器》经验,为你挑选了1个好方法。

我正在寻找在python中创建我可以运行的服务器,并将作为SSH服务器工作.然后,这将允许不同的用户登录,并且就像他们正常登录一样,但只能访问一个命令.

我想这样做,以便我可以有一个系统,我可以添加用户,而无需创建系统范围的帐户,以便他们可以,例如,提交到VCS分支,或类似.

虽然我可以通过海螺来解决这个问题,然后把它变成一个"自定义"的shell ...我无法弄清楚如何使它成为一个SSH流就好像它是一个真实的(我是最好是想限制为/ bin/bzr,以便bzr + ssh可以工作.

它需要在python中(我可以获得授权)但不知道如何链接到应用程序.

这需要在python中在其设计的应用程序内工作,并且能够用于那些无法访问的用户添加新用户



1> Jean-Paul Ca..:

当您编写Conch服务器时,您可以控制客户端通过实现发出shell请求时会发生什么ISession.openShell.海螺服务器IConchUser将从您的领域请求,然后根据需要调整生成的头像以ISession进行呼叫openShell.

ISession.openShell我们的工作是将传递给它的传输对象与协议相关联,以解释从它接收的字节,并在需要时将字节写入其中以发送给客户端.

在一个不幸的转折中,传递给openShell代表传输的对象实际上是一个IProcessProtocol提供者.这意味着您需要调用makeConnection它,通过IProcessTransport提供程序.当从客户端收到数据时,IProcessProtocol将调用writeToChild您传递给的传输makeConnection.当您想要将数据发送到客户端时,您应该调用childDataReceived它.

要看到确切的行为,我建议您阅读的实施IProcessProtocol传递进来.不要依赖任何不属于它的东西IProcessProtocol,但是看到实现可以更容易理解正在发生的事情.

您可能还想查看正常shell创建的实现,以了解您的目标.这将为您提供有关如何将您启动的bzr子进程的stdio与SSH通道关联的线索.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有