解決策 1:
rssh シェル (http://pizzashack.org/rssh/) はまさにこの目的のために設計されています。
RHEL/CentOS 5.2 には rssh のパッケージが含まれていないため、ここで RPM を取得できます:http://dag.wieers.com/rpm/packages/rssh/
使用するには、次のように新しいユーザーのシェルとして設定するだけです:
useradd -m -d /home/scpuser1 -s /usr/bin/rssh scpuser1
passwd scpuser1
..または、次のように既存のシェルを変更します:
chsh -s /usr/bin/rssh scpuser1
..そして /etc/rssh.conf
を編集します rssh シェルを構成するには - 特に allowscp
のコメントを外します すべての rssh ユーザーの SCP アクセスを有効にする行。
(chroot を使用してユーザーを自宅に閉じ込めておくこともできますが、それは別の話です。)
解決策 2:
私はこれにかなり遅れていますが、sshキーを使用して、 ~/.ssh/authorized_keys ファイルで許可されている正確なコマンドを指定できます.
<ブロック引用>no-port-forwarding,no-pty,command="scp ソース ターゲット" ssh-dss ...
適切なコマンド設定を行うために、ターゲットで ps to を使用する必要がある場合があります。
PS:"-v" を指定してテスト scp コマンドを実行すると、次のように表示されます
debug1: Sending command: scp -v -t myfile.txt
「-t」は文書化されていない scp オプションであり、遠端のプログラムで使用されることに注意してください。これにより、authorized_keys に何を入れる必要があるかがわかります。
編集: 詳細については、この StackOverflow の質問を参照してください (いくつかのリンクを含む)。
backup_user
という名前のユーザーの場合の実際の例を次に示します。 サーバー側で。
~backup_user/.ssh/authorized_keys
サーバー側のコンテンツ (いくつかのセキュリティ制限あり):
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="scp -v -r -d -t ~/CONTENT" ssh-rsa AAAAMYRSAKEY...
~backup_user/ に、コンテンツにアクセスできるディレクトリへのリンクを作成します。
$ ln -s /path/to/directory/with/accessible/content ~backup_user/CONTENT
これで、クライアント側から、次のコマンドが機能するはずです:
scp -v -r -P 2222 -i .ssh/id_rsa_key_file path/to/data [email protected]:~/CONTENT
このコマンドの機能:
- 詳細情報を表示します (オプション :
-v
を削除できます コマンドとauthorized_keysファイルの両方から) - path/to/data の内容を再帰的にコピーします。 (オプション :
-r
を削除できます 再帰的なコピーを作成したくない場合は、コマンドとauthorized_keysファイルの両方から) - ポート 2222 を使用してサーバーに接続します (オプション :
-P 2222
を削除できます コマンドから) - ID ファイルを使用して接続を自動化します (オプション :
-i .ssh/id_rsa_key_file
を削除できます path/to/data
の内容/path/to/directory/with/accessible/content/
にコピーされます
サーバーからクライアントに 1 つまたは複数のファイルのコピーを作成するには、ここで説明するようにこれを処理するシェル スクリプトを作成する必要があります
解決策 3:
パーティーには少し遅れましたが、ForceCommand
をご覧になることをお勧めします。 OpenSSH の指令。
Subsystem sftp internal-sftp
Match group sftponly
ForceCommand internal-sftp
確かに、これは SCP ではなく SFTP ですが、制限付きシェルよりも安全に同じ目標に到達します。さらに、必要に応じてユーザーを chroot できます。
解決策 4:
これには MySecureShell を使用します。他の制限も構成できます。
https://github.com/mysecureshell/mysecureshell
接続を SFTP/SCP のみに制限します。シェル アクセスなし。
解決策 5:
scponly を使用することをお勧めします。
これは制限されたシェルであり、SCP ファイルをサーバーに送信するだけで、実際にログインすることはできません。ソフトウェアの情報とソース コードのダウンロードはこちらから入手でき、事前にコンパイルされた RPM パッケージは次の URL から入手できます。 EPEL YUM リポジトリ。
インストールしたら、新しくインストールした制限付きシェルを使用するために、アクセスを制限したい各ユーザー アカウントを構成する必要があります。 /etc/passwd を介して手動でこれを行うか、次のコマンドを使用できます:usermod -s /usr/bin/scponly USERNAME