คุณต้องการ -e ssh สำหรับ rsync หรือไม่


22

rsync --progress -avze ssh user@host:/path/to/files ./hereฉันมักจะใช้ในการใช้คำสั่งต่อไปนี้เมื่อคัดลอกจากเซิร์ฟเวอร์: rsync --progress -avz user@host:/path/to/files ./hereแต่เพื่อนของจิตใจที่แสดงให้เห็นว่าผมสามารถทำ ดังนั้นคำถามคือถ้าคุณไม่ต้องการ-e sshทำไมมันมีอยู่แล้ว?

คำตอบ:


20

ทุกครั้งที่คุณต้องการตัวเลือกเพิ่มเติมสำหรับคำสั่ง ssh นอกผู้ใช้และโฮสต์จากนั้นคุณต้องใช้แฟล็ก -e บางทีเซิร์ฟเวอร์ที่คุณกำลังเชื่อมต่ออยู่กำลังฟัง ssh บนพอร์ต 2222

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

อีกทางเลือกหนึ่งในการหลีกเลี่ยงปัญหานี้มี 2 ไฟล์ที่คุณสามารถใช้ได้ /etc/ssh/ssh_configหรือ~/.ssh/config

ssh_configแฟ้มปรับแต่งที่ใช้รูปแบบเดียวกับ สามารถกำหนดค่าตามความต้องการของผู้ใช้แต่ละคน!


9

นอกจากนี้คุณยังจะต้องถ้าคุณใช้ตั้งคีย์ส่วนตัวไม่ใช่ค่าเริ่มต้นคือระบุคีย์ส่วนตัวผ่าน-e -e 'ssh -i /path/to/private/key/file.pem'สำหรับเรื่องนั้นฟังพอร์ตที่ไม่ใช่ค่าเริ่มต้นสำหรับ sshd เช่นกัน โดยทั่วไปใช้-eถ้าใช้เพียงแค่ใช้งานssh user@hostไม่ได้


เป็น-iตัวเลือกสำหรับการ SSH หรือ rsync ในตัวอย่างของคุณอยู่แล้ว? และถ้าเป็น ssh มันจะทำงานโดยไม่มีเครื่องหมายคำพูดเดี่ยว ๆ รอบคำสั่งหรือไม่?
Izkata

โอ้ใช่ฉันต้องการคำพูด แก้ไขคำตอบของฉันตอนนี้
cjc

8

คุณไม่จำเป็นต้องใช้ -e ssh เพื่อใช้ ssh หากคุณระบุเป้าหมายเป็น user @ host: / path / to / files คุณจะใช้ ssh ตามค่าเริ่มต้น มันเหลืออยู่ในก) สำหรับเหตุผลด้านความเข้ากันได้และ b) เคสที่คุณอาจมีโฮสต์ rsyncd และ ssh รวมกัน


2
ตัวอย่างเช่นจำเป็นสำหรับ RHEL 3 เนื่องจาก RSYNC_RSH มีค่าเริ่มต้นเป็น 'rsh'
Kyle Smith

5

ขึ้นอยู่กับสิ่งที่ระบุไว้สำหรับ--with-rshตัวเลือกการกำหนดค่าในเวลารวบรวม ตอนนี้ค่าเริ่มต้นคือ ssh หากไม่ได้ระบุตัวเลือกนี้ มันเคยเป็น rsh มาก่อนในบางครั้งแม้ว่ามันจะเป็น rsh แต่ก็อาจไม่จำเป็นเพราะ ssh อาจเป็นการนำ rsh เริ่มต้นไปใช้ในหลาย ๆ กล่อง ในทุกเครื่องของฉันตัวอย่างเช่นreadlink -f $(which rsh)แสดงให้เห็นว่า rsh เป็นเพียง symlink ที่ชี้ไปที่ / usr / sbin / ssh

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.