Bagaimana cara men-setup Rsync tanpa kata sandi dengan SSH di UNIX / Linux?

19

Bagaimana saya mengatur rsync antara dua host tanpa memberikan kata sandi?


sumber
Itu seharusnya sangat membantu: blogs.oracle.com/jkini/entry/how_to_scp_scp_and
Tom
Maverick143 telah memberikan jawaban, tetapi pertanyaan ini tidak benar-benar menjadi milik StackOverflow karena tidak ada hubungannya dengan pemrograman. SuperUser.com akan lebih relevan.
Martin

Jawaban:

30

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(di 192.168.200.10server).

Ini akan menanyakan kata sandi akun Anda di server jarak jauh.

rsync -avz -e ssh /home/test/ [email protected]:/backup/test/

2. ssh-keygen menghasilkan kunci.

Sekarang atur sshagar tidak meminta kata sandi saat Anda melakukan ssh. Gunakan ssh-keygendi 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 [email protected]

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 [email protected]

Lakukan rsync lagi, seharusnya tidak meminta Anda memasukkan kata sandi apa pun kali ini.

rsync -avz -e ssh /home/test/ [email protected]:/backup/test/
MangeshBiradar
sumber
Ini juga membantu lebih baik. troy.jdmz.net/rsync/index.html
MangeshBiradar
5
Hapus salin dan tempel dari thegeekstuff.com/2011/07/rsync-over-ssh-without-password Anda harus merujuk penulis asli.
Lawrence Cherone
Jika Anda perlu menggunakan pengguna yang berbeda, Anda dapat melakukannya saat Anda melakukan ssh-copy-id: ssh-copy-id -i ~ / .ssh / id_rsa.pub [email protected]
Finni McFinger
1

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

  • Buka id_rsa.pub, salin kontennya
  • Login ke ServerB menggunakan pengguna yang sama dalam perintah rsync
  • Di ServerB, tambahkan konten ke ~/.ssh/authorized_keys. Buat file jika tidak ada. Pastikan mode file adalah 700.
Johny
sumber
0

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 itvia FileZilla pada HDD 1TB target jadi hanya file yang relevan yang ditransfer.

Hanya ketika transfer selesai saya menghapus versi yang lebih lama.

Voila. Keberhasilan.

SDsolar
sumber
-1

tandai pengguna di alamat akan lebih baik

ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
DreamAndDead
sumber
2
Meskipun ini mungkin menjawab pertanyaan, itu akan menjadi jawaban yang lebih baik jika Anda bisa memberikan penjelasan mengapa itu bisa terjadi.
DavidPostill
Juga sintaksisnya. Saya percaya ini digunakan sebagai pengganti perintah seperti ini: rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)maka semua excludesdan --deletelain - lain. Saya belum membuatnya bekerja tetapi ini adalah yang paling dekat yang saya lihat. Seharusnya Anda harus melakukan ini bahkan jika Anda sudah bisa sshdan scpke server target, dan daemon rsync perlu dijalankan karena tidak menggunakan format sftp normal. Saya masih mencari.
SDsolar