Bagaimana saya mengatur rsync antara dua host tanpa memberikan kata sandi?
Bagaimana saya mengatur rsync antara dua host tanpa memberikan kata sandi?
Jawaban:
Di bawah ini adalah artikel dari The Geek Stuff :
1. Uji rsync lewat ssh (dengan kata sandi):
Lakukan rsync untuk memastikannya meminta kata sandi untuk akun Anda di server jarak jauh, dan berhasil menyalin file ke server jarak jauh.
Contoh berikut akan menyinkronkan folder lokal
/home/test
ke folder jarak jauh/backup/test
(di192.168.200.10
server).Ini akan menanyakan kata sandi akun Anda di server jarak jauh.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
2. ssh-keygen menghasilkan kunci.
Sekarang atur
ssh
agar tidak meminta kata sandi saat Anda melakukan ssh. Gunakanssh-keygen
di server lokal untuk menghasilkan kunci publik dan pribadi.$ ssh-keygen
Masukkan frasa sandi (kosong tanpa frasa sandi):
Masukkan frasa sandi yang sama lagi: Catatan: Saat meminta Anda memasukkan frasa sandi cukup tekan tombol enter, dan jangan berikan kata sandi apa pun di sini.
3. ssh-copy-id menyalin kunci publik ke host jarak jauh
Gunakan
ssh-copy-id
, untuk menyalin kunci publik ke host jarak jauh.ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.200.10
Catatan: Di atas akan menanyakan kata sandi untuk akun pengguna pada host jarak jauh, dan menyalin kunci publik secara otomatis ke lokasi yang sesuai. Jika ssh-copy-id tidak berfungsi untuk Anda, gunakan metode yang kita bahas sebelumnya untuk mengatur kata sandi ssh lebih sedikit login.
4. Lakukan rsync lewat ssh tanpa kata sandi
Sekarang, Anda harus dapat ssh ke host jarak jauh tanpa memasukkan kata sandi.
ssh user@192.168.200.10
Lakukan rsync lagi, seharusnya tidak meminta Anda memasukkan kata sandi apa pun kali ini.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
Buat kunci publik di ServerA
$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:
Kunci publik akan dibuat dan disimpan di
~/.ssh/id_rsa.pub
Salin kunci publik ke host jarak jauh
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100
Atau
~/.ssh/authorized_keys
. Buat file jika tidak ada. Pastikan mode file adalah 700.Semua saran rsync ini gagal menggunakan versi terbaru pada bulan Agustus 2017 di Ubuntu 16.04 LTS. Tidak satu pun dari mereka yang berfungsi.
Mereka juga berbagi kekurangan yang membutuhkan daemon rsync yang berjalan di server file.
Jawaban ini berfungsi dengan NAS Linux generik
DI SINI LANGKAH:
1) GUNAKAN rsync seperti yang ditunjukkan di bawah ini. (ke direktori di bawah / mnt atau / media yang Anda buat atau di perangkat yang Anda pasang. tidak masalah yang mana) 2) TRANSFER file DENGAN scp seperti yang ditunjukkan di bawah ini. FileZilla juga akan berfungsi.
Semua ini (kecuali FileZilla) dapat bekerja di cron tanpa kata sandi.
Pengaturan ini bekerja dengan sangat baik. Satu-satunya waktu Anda memerlukan kata sandi adalah ketika Anda mengatur ssh-copy-id awal untuk mengatur login tanpa kata sandi RSA. Kemudian Anda memprogramnya ke FileZilla sekali. Setelah itu, hari demi hari, tidak ada kata sandi yang muncul. Ini mudah. Dan bagian terbaiknya adalah Anda dapat menggunakan semua manfaat dari program rsync.
Jawaban ini menjelaskan cara menggunakan rsync sendiri tanpa kata sandi.
Juga, tidak perlu menginstal daemon lain (rsync) di kedua sistem.
Jika Anda belum melakukannya, lakukan ini:
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rse.pub NASserver
dan mengujinya dengan ini:
ssh NASserver
dan mungkin sesuatu seperti ini:
scp myfile myusername@NASserver:Documents
Saya memiliki hard drive kedua jadi saya menggunakan rsync untuk menyalin boot drive ke subdirektori di sdb1 (dipasang di bawah / mnt dan dikecualikan dari rsync).
Jika Anda tidak memiliki hard drive fisik, dan memiliki cukup ruang, Anda cukup membuat subdirektori di bawah / mnt (atau / media) dan menggunakannya.
Selama direktori tersebut dikecualikan, tidak masalah apakah itu pada drive yang terpisah atau tidak.
Berikut ini skrip cadangan:
cls
echo "EMPTYING TRASH"
rm ~/.local.share/Trash/*
echo "====================================================================="
echo " BEGINNING rsync from root to /mnt/full/sysbkp"
echo "====================================================================="
time sudo rsync -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/full/mysystem
SETELAH rsync gunakan skrip:
Saya selalu membuat direktori baru pada NASserver target: / mnt / fullsys / mysystem sehingga hanya file yang relevan yang ditransfer.
ssh -e"mv /mnt/fullsys/mysystem mysystem.bak" myusername@NASserver
ssh -e"mkdir /mnt/fullsys/mysystem" myusername@NASserver
scp -r /mnt/full/mysystem myusername@NASserver:/mnt/fullsys/mysystem
Voila! Butuh beberapa saat tetapi kemudian selesai.
Kedua skrip dapat bekerja dengan baik di cron.
Alternatifnya adalah menggunakan FileZilla untuk mengirimkannya ke server NAS secara manual.
Karena bisa ada penghapusan saya selalu
make a new directory and enter it
via FileZilla pada HDD 1TB target jadi hanya file yang relevan yang ditransfer.
Hanya ketika transfer selesai saya menghapus versi yang lebih lama.
Voila. Keberhasilan.
tandai pengguna di alamat akan lebih baik
ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)
maka semua excludes
dan --delete
lain - lain. Saya belum membuatnya bekerja tetapi ini adalah yang paling dekat yang saya lihat. Seharusnya Anda harus melakukan ini bahkan jika Anda sudah bisa ssh
dan scp
ke server target, dan daemon rsync perlu dijalankan karena tidak menggunakan format sftp normal. Saya masih mencari.