Solusi 1:
rssh shell (http://pizzashack.org/rssh/) dirancang tepat untuk tujuan ini.
Karena RHEL/CentOS 5.2 tidak menyertakan paket untuk rssh, Anda dapat melihat di sini untuk mendapatkan RPM:http://dag.wieers.com/rpm/packages/rssh/
Untuk menggunakannya, atur saja sebagai shell untuk pengguna baru seperti ini:
useradd -m -d /home/scpuser1 -s /usr/bin/rssh scpuser1
passwd scpuser1
..atau ubah shell untuk yang sudah ada seperti ini:
chsh -s /usr/bin/rssh scpuser1
..dan edit /etc/rssh.conf
untuk mengonfigurasi rssh shell - terutama batalkan komentar allowscp
baris untuk mengaktifkan akses SCP untuk semua pengguna rssh.
(Anda mungkin juga ingin menggunakan chroot agar pengguna tetap berada di rumah mereka, tetapi itu cerita lain.)
Solusi 2:
Saya sangat terlambat untuk ini, tetapi Anda dapat menggunakan kunci ssh dan menentukan perintah persis yang diizinkan dalam file ~/.ssh/authorized_keys mereka, mis.
no-port-forwarding,no-pty,command="scp source target" ssh-dss ...
Anda mungkin perlu menggunakan ps pada target untuk menyetel setelan perintah yang benar.
PS:Jika Anda menjalankan perintah uji scp dengan "-v", Anda dapat melihat sesuatu seperti ini
debug1: Sending command: scp -v -t myfile.txt
Anda akan mencatat bahwa "-t" adalah opsi scp tidak berdokumen, yang digunakan oleh program di ujung. Ini memberi Anda gambaran tentang apa yang perlu Anda masukkan ke dalam authorized_keys.
EDIT: Anda dapat menemukan informasi selengkapnya (dengan beberapa tautan) dalam pertanyaan StackOverflow ini.
Ini adalah contoh yang berfungsi untuk ini, untuk pengguna bernama backup_user
di sisi server.
~backup_user/.ssh/authorized_keys
konten di sisi server (dengan beberapa batasan keamanan lainnya):
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="scp -v -r -d -t ~/CONTENT" ssh-rsa AAAAMYRSAKEY...
Buat tautan di ~backup_user/ yang menautkan ke direktori tempat konten dapat diakses.
$ ln -s /path/to/directory/with/accessible/content ~backup_user/CONTENT
Sekarang, dari sisi klien, perintah berikut seharusnya berfungsi :
scp -v -r -P 2222 -i .ssh/id_rsa_key_file path/to/data [email protected]:~/CONTENT
Apa yang dilakukan perintah ini:
- Menampilkan informasi verbose (opsional :Anda dapat menghapus
-v
dari file command dan authorized_keys) - Ini secara rekursif menyalin konten dari jalur/ke/data. (opsional :Anda dapat menghapus
-r
dari file command dan authorized_keys jika Anda tidak ingin membuat salinan rekursif) - Menggunakan port 2222 untuk terhubung ke server (opsional :Anda dapat menghapus
-P 2222
dari perintah) - Ia menggunakan dan file identitas untuk mengotomatiskan koneksi (opsional :Anda dapat menghapus
-i .ssh/id_rsa_key_file
- Isi dari
path/to/data
akan disalin ke/path/to/directory/with/accessible/content/
Untuk membuat salinan file (atau beberapa) dari server ke klien, Anda harus membuat skrip shell yang menangani ini seperti yang dijelaskan di sini
Solusi 3:
Saya agak terlambat ke pesta, namun saya sarankan Anda melihat ForceCommand
direktif OpenSSH.
Subsystem sftp internal-sftp
Match group sftponly
ForceCommand internal-sftp
Memang, ini adalah SFTP dan bukan SCP, tetapi mencapai tujuan yang sama, lebih aman dibandingkan dengan shell yang dibatasi. Selain itu, Anda dapat melakukan chroot pengguna jika Anda mau.
Solusi 4:
Saya menggunakan MySecureShell untuk melakukan ini. Anda juga dapat mengonfigurasi batasan lain.
https://github.com/mysecureshell/mysecureshell
Membatasi koneksi ke SFTP/SCP saja. Tidak ada akses shell.
Solusi 5:
Saya akan merekomendasikan menggunakan scponly.
Ini adalah shell terbatas yang memungkinkan pengguna untuk melakukan apa yang terdengar seperti, file SCP ke server, tetapi tidak benar-benar masuk. Unduhan informasi dan kode sumber untuk perangkat lunak tersedia di sini dan paket RPM yang telah dikompilasi tersedia melalui Repositori EPEL YUM.
Setelah diinstal, Anda perlu mengonfigurasi setiap akun pengguna, yang ingin Anda batasi aksesnya, untuk menggunakan shell terbatas yang baru diinstal. Anda dapat melakukannya secara manual melalui /etc/passwd atau menggunakan perintah berikut:usermod -s /usr/bin/scponly USERNAME