$ rsync -avz --delete Documents cholwich@xxx.com:Backup
การทำงานแบบนี้โดยปกติ จะต้องใส่ password เพื่อ login เข้าไปที่ server ที่เราต้องการเอาไฟล์ไปวางไว้ ถ้าไม่ต้องการใส่ password ทุกครั้ง ก็สามารถทำได้โดยใช้ keypair สำหรับ authentication โดยเอา public key ไปวางไว้ที่ server และคนที่มี private key เท่านั้นที่จะสามารถ login เข้าไปได้โดยไม่จำเป็นต้องใส่ password
ขั้นตอนการตั้งค่า
- สร้าง keypair
$ ssh-keygen -t rsa
ระบุให้เก็บ keypair ไว้ที่ ~/.ssh/ โดยไม่ต้องระบุ passphrase เมื่อเสร็จแล้วจะได้ไฟล์มา 2 ไฟล์ คือ id_rsa เก็บ private key และ id_rsa.pub เก็บ public key
- เอาไฟล์ id_rsa.pub ไปวางไว้ที่ฝั่ง server โดยเอาไปต่อท้ายไฟล์ ~/.ssh/authorized_keys ซึ่งเป็นไฟล์สำหรับเก็บรายการของ key ที่ใช้ authentication
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
หรือ ถ้ายังไม่มีไฟล์นี้อยู่ ก็เปลี่ยนชื่อไฟล์ id_rsa.pub ให้เป็นชื่อ authorized_keys เลย ก็ได้
$ mv id_rsa.pub ~/.ssh/authorized_keys
(จริงๆ คำสั่งแรกคำสั่งเดียว ก็ครอบคลุมทั้งสองกรณีอยู่แล้ว)
เพียงเท่านี้ ครั้งต่อไปที่เราเชื่อมต่อไปยัง server ก็จะไม่จำเป็นต้องใช้ password อีกแล้ว แต่ยังไงก็คงต้องเก็บรักษา private key เอาไว้ให้ดีๆ ถ้าจะย้ายไปใช้เครื่องอื่น หรือ install เครื่องใหม่ ก็แค่เอา private key กลับไปวางไว้ที่ .ssh ของเราในเครื่อง client ก็พอแล้ว
2 comments:
rsync แบบไม่ใส่ "-e ssh" มันไม่ใช่วิ่งไปหา rsync daemon เหรอครับ (port 873) ซึ่งก็ไม่น่าเกี่ยวกับ ssh แล้ว ไม่แน่ใจครับ ไม่เคยใส่ใจรายละเอียดของ rsync
ไม่นะ ปกติผมก็ใช้อย่างนี้มาตลอด ใช้กับ local directory ก็ได้ด้วย คิดว่าน่าจะเลือกได้จากรูปแบบ destination ล่ะ
Post a Comment