2008-10-09 4 views
5

나는 실행할 수있는 서버를 만드는 방법을 찾고 있으며 SSH 서버로 작동합니다. 그러면 다른 사용자가 로그인하여 정상적으로 로그인 한 것처럼 작동하지만 하나의 명령에만 액세스 할 수 있습니다.Python - Conch를 사용하여 가상 SSH 서버를 만드는 방법

시스템 전체 계정을 만들지 않아도 사용자를 추가 할 수있는 시스템을 갖춰서 VCS 분기 또는 이와 유사한 방식으로 커밋 할 수 있습니다.

"커스텀"쉘을 사용하기 위해 conch를 사용하는 방법을 알아낼 수 있지만 ... SSH 스트림이 실제 것처럼 작동하도록 만드는 방법을 알아낼 수는 없습니다 (나는 바람직하게/bin/bzr로 제한하여 bzr + ssh가 작동하도록하고 싶다.)

파이썬 (권한 부여를받을 수 있음)에 있어야하지만 어떻게해야 할 지 모르겠다. 응용 프로그램에 연결.이은을 위해 설계된 응용 프로그램 내에서 작동하고, 파이썬은 정말 내 FA 동안 새로운 사용자

답변

7

Conch 서버를 작성할 때 ISession.openShell을 실행하여 클라이언트가 셸 요청을하면 어떻게되는지 제어 할 수 있습니다. Conch 서버는 귀하의 영역에서 IConchUser을 요청한 다음, 결과 아바타를 ISession으로 변경하여 필요한 경우 openShell을 호출합니다.

ISession.openShell 님의 직업은 전달 된 전송 객체를 가져 와서 수신 된 바이트를 해석하고 원할 경우 클라이언트에 전송할 바이트를 쓰는 프로토콜과 연결하는 것입니다.

불행하게도 전송을 나타내는 openShell으로 전달 된 개체는 실제로 IProcessProtocol 공급자입니다. 즉 IProcessTransport 제공자를 전달하여 makeConnection에 전화해야합니다. 클라이언트에서 데이터를 수신하면 IProcessProtocolmakeConnection으로 전달하는 전송에서 writeToChild으로 전화합니다. 클라이언트에 데이터를 보내려면 childDataReceived을 호출해야합니다.

정확한 동작을 보려면 the implementation of the IProcessProtocol that is passed in을 읽어 보시기 바랍니다. IProcessProtocol의 일부가 아닌 다른 것에 의존하지 마십시오. 구현을 보면 상황을 더 쉽게 이해할 수 있습니다.

the implementation of the normal shell-creation을보고 싶을 수도 있습니다. 이렇게하면 SSH 채널로 시작하는 bzr 하위 프로세스의 표준을 연결하는 방법에 대한 단서가 제공됩니다.

-2

을 추가 액세스하지 않고 사람들을 위해 사용할 수 있도록 파이썬에 있어야

을 vorite 언어, 나는 당신이 이것에 대한 자신의 서버를 만들 필요가 없다고 생각합니다. OpenSSH Manualpage for sshd을 보면 로그인 할 때 실행할 특정 명령을 정의 할 수있는 인증 된 키 파일에 대한 "명령"옵션을 찾을 수 있습니다.

키를 사용하면 하나의 시스템 계정을 사용하여 많은 사용자가 로그인 할 수 있으며 공용 키를 계정의 인증 된 키 파일에 넣을 수 있습니다.

우리는 이것을 SVN 용 SSH 터널을 만드는 데 사용하고 있습니다.

+0

이것은 어떻게하고 싶은지가 아닙니다. 파이썬 (권한 부여를 할 수있는)에 있어야하지만 앱에 연결하는 방법을 모른다. 이것은 파이썬에서 설계된 앱 내에서 작업 할 필요가 있고 액세스 권한이없는 사용자가 새 사용자를 추가 할 수 있어야합니다. – Mez

관련 문제