一方向scpを設定するには?

一方向scpを設定するには?

リモートサーバーがあり、他のユーザー()がscpファイルをサーバーに送信できるようにしたいとmy.server.com思います。stranger

ターゲット:

  • strangerユーザーにできるだけ少ないアクセス権を与えます。
  • strangerログインはまったくできないはずです
  • 可能であれば、単方向レプリケーションを準備します。サーバー以外のサーバーにのみファイルをコピーできる必要があります。

どうすればいいですか?

編集:クロスポストをすべて削除しました。問題はここにのみ存在します。助けてください!

編集2:ついに一般的な転送をすることにしましたscp。 @ Lambertの答えは最も完璧な答えを選びます。ご協力ありがとうございます!

ベストアンサー1

上記のすべての制限事項を含むすべての設定が必要な場合は、ProFTPdを使用することをお勧めします。

を使用すると、sftp_moduleセキュアセッションのみを許可できます。バラよりhttp://www.proftpd.org/docs/contrib/mod_sftp.html機能のsftp詳細です。構成例は、ページの下部付近にリストされています。

このDefaultRootディレクティブを使用すると、付与されたユーザーを自分のディレクトリに分離できます。

この<LIMIT>構造により、ユーザーがファイルを検索できないようにするFTPコマンドを制限できますREAD。バラよりhttp://www.proftpd.org/docs/howto/Limit.htmlもっと学ぶ。

ProFTPdで設定を設定すると、2222以外のポートsftpでリッスンすることができます。 ProFTPd用に選択したポートのトラフィックをssh許可するようにファイアウォールおよび/またはルータを設定します。strangerもう1つの可能性は、sftpポート22でProFTPdのモジュールを実行し、ssh別のポートで受信するように再構成することです。

構成例は次のとおりです。

<IfModule mod_sftp.c>
  <VirtualHost a.b.c.d>
    # The SFTP configuration
    Port 2222

    SFTPEngine on
    SFTPLog /var/log/proftpd_sftp.log

    # Configure the RSA, DSA, and ECDSA host keys, using the same host key
    # files that OpenSSH uses. 
    SFTPHostKey /etc/ssh_host_rsa_key
    SFTPHostKey /etc/ssh_host_dsa_key
    SFTPHostKey /etc/ssh_host_ecdsa_key

    <Limit READ>
      DenyAll
    </Limit>

    DefaultRoot ~ users,!staff

  </VirtualHost>
</IfModule>

ノート:これはProFTPdの完全な構成ではないため、必要に応じてProFTPdの基本構成を確認して変更する必要があります。


別の可能性があります。 OpenSSHを使用してください。

ユーザーを作成しstranger、ユーザーのパスワードを設定します。

useradd -m -d /home/stranger -s /bin/true stranger
passwd stranger

ファイルを編集し/etc/ssh/sshd_config、次の行があることを確認しない場合は追加します。

Subsystem       sftp    internal-sftp

次に、下部にMatchブロックを追加します/etc/ssh/sshd_config

Match User stranger
    ChrootDirectory  %h
    ForceCommand  internal-sftp -P read,remove
    AllowTcpForwarding no

ノート:ユーザーが既存のファイルを上書きできます。

sshdデーモンを再起動してください。

ディレクトリ所有者を/home/stranger次に設定しますroot

chown root:stranger /home/stranger

ノート:root 〜しなければならない所有者であり、ChrootDirectoryを使用している場合は、書き込み権限を持つ唯一の所有者かもしれません。別のアプローチは、行-d %uに追加して設定することですが、ユーザーは次を使用して別のユーザー名を表示できます。ForceCommand internal-sftpChrootDirectory /homecd /ls

ユーザー用のアップロードディレクトリを作成します。

mkdir /home/stranger/upload; chown stranger:stranger /home/stranger/upload

これで、stranger次のコマンドを使用してユーザーとしてログインできます。

sftp stranger@somehost

ファイルをアップロードしても問題ありません。

sftp> put myfile
Uploading myfile to /upload/myfile
myfile                               100%   17     0.0KB/s   00:00    
sftp> get myfile
Fetching /upload/myfile to myfile
/upload/myfile                         0%    0     0.0KB/s   --:-- ETA
Couldn't read from remote file "/upload/myfile" : Permission denied

おすすめ記事