นอกจากคำตอบก่อนหน้าทั้งหมดนี่คือคำตอบที่ต้องใช้กุญแจ SSH พร้อมข้อ จำกัด เกี่ยวกับสิ่งที่สามารถทำได้เมื่อลงชื่อเข้าใช้ด้วยคีย์นั้น
บนเซิร์ฟเวอร์ A
ในส่วนนี้มันมีความสำคัญน้อยกว่าถ้าคุณสร้างผู้ใช้แยกต่างหากหรือใช้ชื่อผู้ใช้ที่มีอยู่ของคุณแม้ว่าฉันจะเป็นฉันก็จะสร้างผู้ใช้แยกต่างหาก ฉันจะใช้ชื่อผู้ใช้bkpuser
สำหรับเซิร์ฟเวอร์ทั้งสองในตัวอย่างด้านล่าง
เมื่อเข้าสู่ระบบbkpuser
ให้สร้างคีย์ SSH โดยไม่มีรหัสผ่าน
บนเซิร์ฟเวอร์ B
เปิดใช้งานในPubkeyAuthentication
sshd_config
bkpuser
สร้างผู้ใช้ ตั้งรหัสผ่านที่ซับซ้อนมากหรือปิดใช้งานการเข้าสู่ระบบรหัสผ่านสำหรับผู้ใช้นั้น (วิธีที่คุณทำขึ้นอยู่กับว่ายูนิกซ์และ distro ที่คุณใช้งานอยู่) จุดคือผู้ใช้ควรล็อกอินด้วยคีย์ SSH เท่านั้น ทำให้เเน่นอนbkpuser
มีสิทธิ์อ่านเพื่อเข้าถึงไดเรกทอรีและไฟล์ทั้งหมดที่คุณต้องการสำรอง
คัดลอกส่วนสาธารณะของคีย์ที่สร้างขึ้นบน A ถึง~bkpuser/.ssh/authorized_keys
บน B. แก้ไขการเพื่อเรียกใช้คำสั่งในการเชื่อมต่อโดยอัตโนมัติ คำสั่งนั้นไม่ควรเป็นตัวชี้ไปยังเชลล์สคริปต์ แทนที่เชลล์สคริปต์ลงในคีย์โดยตรง รวมถึงข้อ จำกัด เพื่อให้สามารถใช้คีย์ได้จากเซิร์ฟเวอร์ A เท่านั้นและไม่มีเซิร์ฟเวอร์อื่น ในตัวอย่างด้านล่างนี้ฉันให้เซิร์ฟเวอร์ที่อยู่ IP และฉันสมมติว่าไฟล์ที่ผมต้องการที่จะกลับขึ้นไปอยู่ภายใต้การทั้งหมด10.1.2.3
/data
from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="cd /data;/usr/bin/tar -cf - *; /usr/bin/logger -t BACKUP -p daemon.info \"INFO: Backup-files on $HOST fetched from ${SSH_CLIENT%% *} by $USER\";" ssh-dss AA.....
บนเซิร์ฟเวอร์ A
หากคุณกำลังใช้หนึ่งในแท็บ cron ที่สนับสนุน@reboot
รายการเพิ่มเช่นรายการเพื่อbkpuser
s crontab ssh -i ~bkpuser/.ssh/id_dsa serverB > backup.tar.gz
กับคำสั่ง หากไม่อนุญาตให้ตั้งค่าเมื่อใดก็ได้ที่คุณต้องการ - ถ้าเป็นข้อมูลของฉันฉันอาจทำทุกวัน