Apakah Anda memerlukan -e ssh untuk rsync?

22

Saya selalu digunakan untuk menggunakan perintah berikut ketika menyalin dari server: rsync --progress -avze ssh user@host:/path/to/files ./here. Namun, seorang teman pikiran menunjukkan kepada saya bahwa saya bisa melakukannya rsync --progress -avz user@host:/path/to/files ./here. Jadi pertanyaannya adalah, jika Anda tidak perlu -e sshmengapa ada?

GradGuy
sumber

Jawaban:

20

Kapan saja Anda membutuhkan opsi tambahan untuk perintah ssh di luar pengguna dan host, maka Anda memerlukan tanda -e. Mungkin server yang Anda hubungkan memiliki ssh mendengarkan pada port 2222.

rsync -e 'ssh -p 2222' /source usr@host:/dest

Alternatif untuk menyiasatinya, ada 2 file yang dapat Anda gunakan. /etc/ssh/ssh_configatau~/.ssh/config

File config menggunakan format yang sama dengan ssh_config. Itu hanya dapat dikonfigurasi pada basis per pengguna!

Utah Jarhead
sumber
9

Anda juga perlu -ejika Anda menggunakan lokasi kunci privat non-default, yaitu, tentukan kunci privat via -e 'ssh -i /path/to/private/key/file.pem'. Dalam hal ini, port mendengarkan non-standar untuk sshd, juga. Pada dasarnya, gunakan -ejika hanya menggunakan ssh user@hosttidak berhasil.

cjc
sumber
Apakah -iopsi untuk ssh atau rsync dalam contoh Anda? Dan jika itu untuk ssh, apakah itu bekerja tanpa tanda kutip tunggal di sekitar perintah?
Izkata
Oh, benar, saya perlu tanda kutip. Mengedit Jawaban saya sekarang.
cjc
8

Anda tidak perlu -e ssh untuk menggunakan ssh. Bahkan, jika Anda menentukan target sebagai pengguna @ host: / path / ke / file, Anda menggunakan ssh secara default. Itu dibiarkan dalam a) untuk alasan kompatibilitas dan b) kasus pinggiran di mana Anda mungkin memiliki kombinasi host rsyncd dan ssh.

Joel E Salas
sumber
2
Ini diperlukan pada RHEL 3, misalnya, karena RSYNC_RSH default ke 'rsh'.
Kyle Smith
5

Itu tergantung pada apa yang ditentukan untuk --with-rshopsi konfigurasi pada waktu kompilasi. Default sekarang ssh jika opsi ini tidak ditentukan. Sudah rsh pada suatu waktu di masa lalu, namun bahkan jika itu rsh, Mungkin tidak diperlukan karena ssh mungkin merupakan implementasi rsh default pada banyak kotak. Pada semua komputer saya, misalnya readlink -f $(which rsh)menunjukkan bahwa rsh sebenarnya hanyalah sebuah symlink yang menunjuk ke / usr / sbin / ssh

rebus
sumber