我正在寻找在python中创建我可以运行的服务器,并将作为SSH服务器工作.然后,这将允许不同的用户登录,并且就像他们正常登录一样,但只能访问一个命令.
我想这样做,以便我可以有一个系统,我可以添加用户,而无需创建系统范围的帐户,以便他们可以,例如,提交到VCS分支,或类似.
虽然我可以通过海螺来解决这个问题,然后把它变成一个"自定义"的shell ...我无法弄清楚如何使它成为一个SSH流就好像它是一个真实的(我是最好是想限制为/ bin/bzr,以便bzr + ssh可以工作.
它需要在python中(我可以获得授权)但不知道如何链接到应用程序.
这需要在python中在其设计的应用程序内工作,并且能够用于那些无法访问的用户添加新用户
当您编写Conch服务器时,您可以控制客户端通过实现发出shell请求时会发生什么ISession.openShell
.海螺服务器IConchUser
将从您的领域请求,然后根据需要调整生成的头像以ISession
进行呼叫openShell
.
ISession.openShell
我们的工作是将传递给它的传输对象与协议相关联,以解释从它接收的字节,并在需要时将字节写入其中以发送给客户端.
在一个不幸的转折中,传递给openShell
代表传输的对象实际上是一个IProcessProtocol
提供者.这意味着您需要调用makeConnection
它,通过IProcessTransport
提供程序.当从客户端收到数据时,IProcessProtocol
将调用writeToChild
您传递给的传输makeConnection
.当您想要将数据发送到客户端时,您应该调用childDataReceived
它.
要看到确切的行为,我建议您阅读的实施IProcessProtocol
传递进来.不要依赖任何不属于它的东西IProcessProtocol
,但是看到实现可以更容易理解正在发生的事情.
您可能还想查看正常shell创建的实现,以了解您的目标.这将为您提供有关如何将您启动的bzr子进程的stdio与SSH通道关联的线索.