新しいSFTPサーバーを作成しようと考えています。現在のSFTPサーバーは、すべてのセッションで開始されます。 SFTPのユーザーが3人いる場合は、3つのSFTPサーバーがあります。それは私が望むものではありません。すべての新しいSFTPセッションが接続されているサーバーが1つ必要です。これを行う方法?新しいSFTPサブプロセスを開始するのではなく、既存のSFTPサーバーに接続する
SFTPセッションを開始するためにサーバーにログインすると、SSHプロセスが開始され、SFTPサブシステムも開始されます。 SSHプロセスは暗号化などの処理を行います.IOはSFTPプロセスの標準ポート0,1,2(stdin、stdout、stderr)を通して行われます。
これは、セッションごとに専用のSFTPプロセスがある場合にすべて動作します。しかし、接続したいSFTPサーバが1台ある場合、どうすれば動作させることができますか? "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プロトコルを使用していますしかし、(b)aclのロックとハンドリングは実装されていません。これらの共有テーブルを実装するには、アクセスフラグが設定されているすべてのオープンファイルとwho for(b)ロックが動作するためのブロックモードが必要です。すべてのSFTPセッションを持つ別のプロセスにつながるとき:
Subsystem sftp /usr/libexec/gesftpserver
(あなたは3よりも高い任意のプロトコルを使用したい時に避けられないもの) 、共有データベースはロックとACLのを処理するためのsollutionです。 もう1つの解決策は、新しいsftpセッションがすべて、ブート時に起動される既存の「スーパー」sftpサーバーに接続することです。同時アクセス、ロックなどはプログラムするのがずっと簡単です。
HOWTOは、この行でこれを行う:
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?
感謝を事前に。
追加: 私はサーバソケットをリスニングしているsftpファイルサーバに取り組んでいます。クライアントは直接ストリームローカル機能を使用して接続し、opensshのチャネルに接続することができます。この方法では、すべてのクライアントに1つのサーバープロセスを持たせることができます。これが私が最初に望んでいたものです。