Saya mencoba menyiapkan server cadangan. Saya ingin chroot setiap pengguna (klien) ke direktori home-nya, dan hanya mengizinkannya menggunakan sftp dan rsync .
Saya segera menemukan bahwa saya bukan satu-satunya yang mencoba melakukan sesuatu seperti ini, dan saya menemukan panduan ini dan mengikutinya. Jadi sekarang saya punya pengguna chroot dengan sftp saja.
Kemudian saya menemukan bahwa rsync perlu ssh untuk menelurkan dirinya di komputer lain, dan sftp itu tidak cukup. Memberi setiap pengguna login ssh adalah sesuatu yang ingin saya hindari sejak awal.
Adakah yang bisa memikirkan beberapa solusi yang mungkin?
Terima kasih,
Menandai
Jawaban:
Solusi sftp juga memerlukan login ssh untuk semua orang, jadi Anda belum benar-benar kehilangan apa pun di sini. Memberi akses ssh tidak selalu menyiratkan akses shell penuh, misalnya, ini menunjukkan cara menggunakan
authorized_keys
file ssh untuk memungkinkan cadangan melalui rsync sambil membatasi perintah yang tersedia hanya pada penerima rsync.Bahkan, jika Anda memilih otentikasi berbasis kunci, daripada otentikasi kata sandi (yang harus Anda lakukan), Anda dapat menjalankan semuanya di bawah satu akun pengguna alih-alih membutuhkan banyak akun. Anda akan menggunakan kunci untuk mengidentifikasi pengguna jarak jauh, dan mengarahkan penerima rsync di direktori tertentu.
Sesuatu seperti ini, di
authorized_keys
file Anda :Seseorang yang menggunakan
user1
kunci pribadi akan membuat cadangan/tmp/user1
, dan seseorang yang menggunakanuser2
kunci pribadi akan membuat cadangan/tmp/user2
. Dan seterusnya...sumber
Jalankan biasa
rsync
dari klien ke server jauh, tetapi tambahkan verbose switch tambahan:,SSH -v
lalu terimaSending command
. Anda akan melihat perintah yang dikirim klien ke server jauh:Dalam kasus saya, itu
Tambahkan ini sebagai
command="..."
ke/home/USER/.ssh/authorized_keys
file server jauh sebagai @ larsks disebutkan. Tambahkan pengaturan keamanan tambahan, jika perlu:no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server
Bersama:
(Diambil dari tutorial yang sangat bagus http://en.positon.org/post/Rsync-command-restriction-over-SSH )
sumber
Anda perlu menyediakan beberapa bentuk akses shell untuk dapat menggunakan rsync kecuali Anda terhubung langsung ke server rsync - port defaultnya adalah 873 (TCP).
Dari halaman manual rysnc :
Untuk memberikan akses shell terbatas, pertimbangkan panduan berikut . (Catatan: tautan asli sudah mati) Ringkasan:
Atau lihat menggunakan rssh (ada panduan untuk mengatur rssh di sini ):
sumber
rrsync
alih-alih rssh, termasuk dalam paket rsync resmi. Lihat derek.simkowiak.net/backing-up-multiple-servers-with-rsnapshotAnda dapat menulis shell yang membungkus rsync.
lihat ide umum di sini: https://sixohthree.com/1458/locking-down-rsync-using-ssh
di dalam pembungkus cangkang Anda, Anda dapat melakukan apa yang Anda inginkan dan mungkin chroot pengguna.
Dalam kasus saya, saya perlu mengaktifkan akun virtual menggunakan pengguna * nix yang sama. Saya berhasil melakukannya dengan menggunakan shell semacam ini ditambah banyak baris dalam file Authorized_keys. Saya belum chroot pengguna tetapi saya telah menambahkan tingkat folder pengguna dalam perintah server rsync.
lihat proses pengguna secara berbeda menggunakan kunci ssh
sumber
SFTP dengan kemampuan Rsync, tanpa shell
Anda dapat menggunakan LFTP + SFTP di lingkungan chroot dan mencapai hasil yang sama seperti menggunakan rsync, tanpa memberikan pengguna shell atau melakukan kustomisasi berat dalam ssh dengan pembungkus.
Ini lebih aman dan bisa jauh lebih cepat.
sumber
Rsync ke dalam chroot memang rumit :) Anda harus mengatur lingkungan minimal untuk / bin / sh dan / usr / bin / rsync di dalam direktori chroot (sisi tujuan) agar bisa berfungsi.
Lihat seluruh artikel di sini, pengaturan rsync-environment pada akhirnya
https://medium.com/@deltazero/linux-remote-backup-rsync-chroot-d797ba6babe5
sumber