Aku perlu melakukan rsync
oleh ssh
dan ingin melakukannya secara otomatis tanpa perlu melewati password untuk ssh
secara manual.
111
Anda harus menggunakan file kunci tanpa frasa sandi untuk login ssh dengan skrip. Ini jelas merupakan risiko keamanan, berhati-hatilah agar keyfile itu sendiri diamankan dengan memadai.
ssh -i
harus selalu memungkinkan di sisi klien. Apakah maksud Anda server mungkin tidak mendukung semua jenis kunci (mis. ECDSA)? Itu tidak akan menjadi masalah besar, hanya kasus penggunaanssh-keygen -t
. Apakah saya melewatkan sesuatu?rsync -e
danssh -i
.Gunakan utilitas penyedia sandi ssh non-interaktif "sshpass"
Di Ubuntu
Perintah untuk rsync
sumber
sshpass -p`cat .password` ssh [...]
. Kemudian lindungi.password
file Anda denganchmod 400 .password
memastikan hanya pengguna Anda yang dapat membacanya.src_path
seharusnya server: path, seperti ini:server01.mydomain.local:/path/to/folder
-a
mengaktifkan rsync termasuk-rlptgoD
, Anda dapat mempersingkat perintah seperti ini:rsync -az ...
Anda dapat menghindari prompt kata sandi pada
rsync
perintah dengan mengatur variabel lingkunganRSYNC_PASSWORD
ke kata sandi yang ingin Anda gunakan atau menggunakan--password-file
opsi.sumber
Jika Anda tidak dapat menggunakan kunci publik / pribadi, Anda dapat menggunakan:
Anda perlu mengganti SRC dan DEST dengan sumber rsync normal dan parameter tujuan, dan mengganti PASS dengan kata sandi Anda. Pastikan file ini disimpan dengan aman!
sumber
Red Hat Enterprise Linux Server release 5.11 (Tikanga)
Saya membuatnya berfungsi seperti ini:
sumber
remote_port_ssh
disetel? Sepertinya placeholder untuk nilai sebenarnya.Gunakan kunci ssh.
Lihat
ssh-keygen
danssh-copy-id
.Setelah itu Anda bisa menggunakan cara
rsync
ini:sumber
Kemungkinan menarik lainnya:
Catatan: -i dsa_private_file yang merupakan kunci pribadi RSA / DSA Anda
Pada dasarnya, pendekatan ini sangat mirip dengan yang dijelaskan oleh @Mad Scientist, namun Anda tidak perlu menyalin kunci pribadi Anda ke ~ / .ssh. Dengan kata lain, ini berguna untuk tugas ad-hoc (satu kali akses tanpa kata sandi)
sumber
Pekerjaan berikut untuk saya:
Saya harus menginstal
sshpass
sumber
Sulit memasukkan kata sandi secara otomatis untuk perintah rsync. Solusi sederhana saya untuk menghindari masalah ini adalah memasang folder yang akan dicadangkan. Kemudian gunakan perintah rsync lokal untuk membuat cadangan folder yang dipasang.
sumber
Meskipun Anda sudah menerapkannya sekarang,
Anda juga dapat menggunakan berharap pelaksanaan (Anda akan menemukan alternatif di Perl, Python: Pexpect, paramiko, dll ..)
sumber
Saya menggunakan file VBScript untuk melakukan ini di platform Windows, itu server saya dengan sangat baik.
sumber
Solusi resmi (dan lainnya) tidak lengkap ketika saya pertama kali mengunjungi, jadi saya kembali, bertahun-tahun kemudian, untuk memposting pendekatan alternatif ini jika ada orang lain di sini yang bermaksud menggunakan pasangan kunci publik / pribadi:
Jalankan ini dari mesin cadangan target, yang menarik dari sumber ke cadangan target
rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' [email protected]:/home/user/Server/ /home/keith/Server/
Jalankan ini dari mesin sumber, yang mengirim dari sumber ke cadangan target
rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' /home/user/Server/ [email protected]:/home/user/Server/
Dan, jika Anda tidak menggunakan port alternatif untuk ssh, pertimbangkan contoh yang lebih elegan di bawah ini:
Jalankan ini dari mesin cadangan target, yang menarik dari cadangan sumber ke target:
sudo rsync -avi --delete [email protected]:/var/www/ /media/sdb1/backups/www/
Jalankan ini dari mesin sumber, yang mengirim dari sumber ke cadangan target:
sudo rsync -avi --delete /media/sdb1/backups/www/ [email protected]:/var/www/
Jika Anda masih dimintai kata sandi, maka Anda perlu memeriksa konfigurasi ssh Anda
/etc/ssh/sshd_config
dan memverifikasi bahwa pengguna di sumber dan target masing-masing memiliki kunci ssh publik masing-masing dengan mengirimkannyassh-copy-id [email protected]
.(Sekali lagi, ini untuk menggunakan pasangan kunci ssh tanpa kata sandi, sebagai pendekatan alternatif, dan bukan untuk meneruskan kata sandi melalui file.)
sumber
Mengikuti ide yang diposting oleh Andrew Seaford, ini dilakukan dengan menggunakan sshfs:
sumber