2017-02-07 4 views
0

새 SFTP 서버를 작성하려고합니다. 현재 SFTP 서버는 모든 세션에 대해 시작됩니다. SFTP 사용자가 세 명인 경우 세 개의 SFTP 서버가 있습니다. 그건 내가 원하는 것이 아니야. 모든 새로운 SFTP 세션이 연결된 서버 하나를 원합니다. 이 작업을 수행하는 방법?새 SFTP 하위 프로세스를 시작하는 대신 기존 SFTP 서버에 연결하십시오.

SFTP 세션을 시작하기 위해 서버에 로그인하면 SSH 프로세스가 시작되고 SFTP 하위 시스템도 시작됩니다. SSH 프로세스는 암호화 등을 처리합니다. io는 SFTP 프로세스의 표준 포트 0, 1 및 2 (stdin, stdout 및 stderr)를 통해 수행됩니다.

모든 세션마다 전용 SFTP 프로세스가있을 때 모두 작동합니다. 하지만 연결할 SFTP 서버가 하나있을 때 어떻게 작동하게 할 수 있습니까? "ssh-to-sftp-connect-agent"를 통해?

더 많은 정보 :

내가 OpenSSH의에 의해 사용되는 버전 3,보다 더 SFTP 버전 6을 사용하고 싶습니다. OpenSSH의 커뮤니티는 SFTP를 구현을 업그레이드하지 않습니다

https://bugzilla.mindrot.org/show_bug.cgi?id=1953

아주 좋은 오픈 소스 SFTP 서버에 있습니다 :

http://www.greenend.org.uk/rjk/sftpserver/

매우 유용 개요 :

http://www.greenend.org.uk/rjk/sftp/sftpversions.html

이 서버는 sftp 프로토콜을 사용합니다. rsion 6,하지만 (b) 잠금 및 acl의 처리가 구현되지 않았습니다. 이러한 공유 테이블을 구현하려면 액세스 플래그가있는 모든 열린 파일과 for (b) 잠금 기능이 작동하는 데 필요한 차단 모드가 필요합니다. 모든 SFTP 세션과 다른 프로세스로 연결하는 경우 :

Subsystem  sftp /usr/libexec/gesftpserver 

다음 공유 데이터베이스 잠금 및 ACL 년대를 처리하는 sollution이다 (당신이 3보다 어떤 프로토콜을 올려서 사용하고자 할 때 피할 수있는). 또 다른 해결책은 모든 새로운 SFTP 세션이 부팅 할 때 시작되는 기존 "슈퍼"SFTP 서버에 연결한다는 것입니다. 동시 액세스, 잠금 등은 프로그램하기가 훨씬 쉽습니다.

노하우이 라인이 수행

Subsystem  sftp /usr/libexec/exampleconnectagent 

가 이상적인 경우에, 에이전트는 접속 및 SFTP 서버, 및 종료에 대한 전용 SSH 프로세스 사이의 연결을 가능하게한다. 긴 이야기, 가능합니까? 내가 여기에 설명 된 FD 년대의 통과를 사용해야합니까 :

Can I share a file descriptor to another process on linux or are they local to the process?

사전에 감사합니다.

추가 : 나는 서버 소켓에 listing하는 sftp 파일 서버에서 일하고있다. 클라이언트는 직접 스트림 로컬 기능을 사용하여 openssh에서 채널을 연결할 수 있습니다. 이 방법으로 모든 클라이언트에 대해 하나의 서버 프로세스를 가질 수 있으며 이것이 내가 원했던 것입니다.

답변

2

현재 SFTP 서버는 모든 세션에 대해 시작됩니다.

의 의미는 "현재 SFTP 서버"입니까? 어느 것이 구체적으로?

OpenSSH (가장 널리 사용되는 SSH/SFTP 서버)는 실제로 각 SFTP 세션에 대해 새 하위 프로세스를 열었습니다. 그리고 그 문제는 거의 없습니다. 최신 버전은 더 이상 없지만. (새) 기본 구성에서는 인 프로세스 SFTP 서버 (별칭 internal-sftp)가 사용됩니다.

OpenSSH: Difference between internal-sftp and sftp-server을 참조하십시오.


정말로 질문에 대한 답변을 얻으려면 질문에 대한 SFTP/SSH 서버를 알려 주셔야합니다. 이 OpenSSH를 대해 참이면

:

  • 아무것도 할 필요가 없다, 기능이 이미있다.
  • 직접 구현을 추가하려면 OpenSSH 코드를 수정해야합니다. 플러그인 할 방법이 없습니다. internal-sftp이 어떻게 구현되는지 확인하십시오.
  • 자신이 제안한 것처럼 다른 방법은 에이전트 아키텍처를 사용하는 것입니다. 이 접근 방식을 취하고 도움이 필요하면 SFTP가 아닌 프로세스 간 통신 및/또는 파일 설명자 공유에 대한보다 구체적인 질문을해야합니다.
관련 문제