คำสั่ง Linux และทักษะเชลล์
sftp: การถ่ายโอนไฟล์ด้วยงบประมาณ SSH
sftp ใช้งานอยู่ใน SSH ซึ่งเป็นเหตุผลว่าทำไมมันจึงมีอายุยืนยาวกว่าคู่แข่ง: คีย์, chroots, Jump hosts และเส้นทางการตรวจสอบทั้งหมดมาได้ฟรี OpenSSH ย้าย scp ไปยังโปรโตคอล SFTP อย่างเงียบๆ ในเวอร์ชัน 9.0 เนื่องจาก SFTP มีบทบาทเป็นโปรโตคอลจริง: รายการไดเร็กทอรี, mkdir, การอนุญาต, การเปลี่ยนชื่อ และโปรโตคอลที่น่าประหลาดใจน้อยกว่ามาก Interactive sftp นั้นใช้ได้สำหรับการย้ายครั้งเดียว ระบบอัตโนมัติทำงานผ่านโหมดแบตช์ รหัสทางออก และการขอโทษเป็นครั้งคราวต่อ rsync
ประเด็นสำคัญ
- ระบบอัตโนมัติคือโหมดแบตช์: sftp -b bat.txt user@host รันไฟล์คำสั่ง ออกจากไม่เป็นศูนย์หากเกิดความล้มเหลวใดๆ และอ่านจาก stdin ด้วย -b -; การแจ้งรหัสผ่านโดยไม่ได้ตั้งใจคือโหมดแบตช์บั๊กจะถูกลบออกเร็วเป็นสองเท่าของการเพิ่มความปลอดภัย
- ชุดคำสั่งมีขนาดเล็กตามวัตถุประสงค์: ls -l, mkdir, ใส่ -p (รักษาการประทับเวลา), get -r (เรียกซ้ำ), chmod และ df -h ภายในเซสชันครอบคลุม 95% ของความต้องการในการดำเนินงาน
- รู้ว่าเมื่อใดที่ rsync ชนะ: sftp จะส่งไฟล์ทั้งหมดอีกครั้ง ในขณะที่ rsync -avz --partial over ssh จะย้ายเดลตา ไม่ตัดสิ่งใดๆ โดยไม่โต้ตอบ และเก็บรักษาไฟล์เก็บถาวรข้อมูลเมตาจำนวนมากที่มีความสำคัญจริงๆ
- ฝั่งเซิร์ฟเวอร์ sftp เปรียบเสมือนรั้ว: ForceCommand Internal-sftp ภายในบล็อก Match ด้วย ChrootDirectory จะเปลี่ยนบัญชีให้เป็นดรอปบ็อกซ์ที่เข้ารหัสและได้รับการตรวจสอบโดยไม่มีเชลล์เลย
- 'sftp ใช้งานได้ แต่เชลล์ใช้งานไม่ได้' เป็นการออกแบบ ไม่ใช่ข้อผิดพลาด: Subsystem sftp Internal-sftp line คือสิ่งที่เปิดใช้งานได้ และการย้าย scp ไปยัง SFTP ใน OpenSSH 9.0 หมายความว่าเซิร์ฟเวอร์รุ่นเก่าที่ไม่มีระบบย่อยสามารถทำลายงาน scp เก่าได้
- การใช้ Cron จะพิจารณาจากพฤติกรรมความล้มเหลว: -o BatchMode=yes, -o ConnectTimeout=10 และการตรวจสอบโค้ดทางออกที่ชัดเจนจะทำให้ระบบเงียบค้างเป็นความล้มเหลวที่ดังและเพจได้
- เอาต์พุตความคืบหน้าคือการควบคุมเสียงรบกวน: sftp ช่างพูด, บันทึก cron เงียบ; -q (หรือการเปลี่ยนเส้นทาง) บวกกับการบันทึกที่ด้าน sshd ให้เส้นทางการตรวจสอบที่ไม่เน่าเปื่อยเป็นกิกะไบต์ของแถบการถ่ายโอน
- การพิมพ์ผิดอย่างหนึ่งที่ประกอบอาชีพ: sftp -P 2222 ใช้ตัวพิมพ์ใหญ่ P (ตัวพิมพ์เล็ก -p หมายถึงอนุรักษ์) ในขณะที่ scp สลับแบบแผนด้วยตัวอักษรเดียวกัน เมื่อพอร์ตผิดให้ตรวจสอบเคสก่อน
บันทึกจากหน้างาน
งาน cron sftp ครั้งหนึ่งค้างหกชั่วโมงเมื่อได้รับแจ้งรหัสผ่านที่ไม่คาดคิดก่อนที่จะมีใครสังเกตเห็น การถ่ายโอนสคริปต์ทุกครั้งตั้งแต่ได้รับ -b, -o BatchMode=yes และรหัสทางออกจะตรวจสอบหน้านั้นแทนที่จะรอ
คำถามที่พบบ่อย
OpenSSH 9.0 เปลี่ยน scp จริงหรือ
โปรโตคอล ไม่ใช่พื้นผิว: ตอนนี้ scp ย้ายไฟล์ผ่าน SFTP ข้างใต้ ดังนั้นโฮสต์ที่ไม่มีระบบย่อย sftp จะทำลายงาน scp รุ่นเก่าโดยไม่แจ้งให้ทราบ การแก้ไขกำลังเปิดใช้งานระบบย่อย ไม่ใช่การย้อนกลับนิสัย
ฉันสามารถย้ายไฟล์เดียวโดยไม่มี sftp เลยได้หรือไม่
ใช่: cat bigfile.bin | ssh user@host 'cat > /tmp/bigfile.bin' เป็นการถ่ายโอนแบบไปป์เดียวแบบพกพา ไม่มีเรซูเม่ ไม่มีข้อมูลเมตา แต่ทำงานได้ทุกที่ที่ SSH ทำงาน ซึ่งเป็นกรณีการใช้งานของมันอย่างแน่นอน
sftp ช้ากว่า scp หรือ rsync หรือไม่
บางครั้ง: โอเวอร์เฮดของโปรโตคอลต่อไฟล์และการบัฟเฟอร์เริ่มต้นจะแสดงในแผนผังไดเร็กทอรีจำนวนมาก วัดลิงก์ของคุณก่อนที่จะเพิ่มประสิทธิภาพ และจำไว้ว่า rsync มักจะตอบกลับเมื่อการร้องเรียน 'ช้าเกินไป'
ฉันจะให้การอัพโหลดของบุคคลที่สามโดยไม่ต้องเข้าถึงเชลล์ได้อย่างไร
บัญชีเฉพาะที่มี ChrootDirectory, ForceCommand ภายใน-sftp และ subdir ที่เขียนได้ รวมถึงการตรวจสอบคีย์ การจำคุก การหมดเวลา และบันทึก ซึ่งเป็นดรอปบ็อกซ์แทนที่จะเป็นคำเชิญ
Kinetikatech ช่วยเรื่อง คำสั่ง linux และทักษะเชลล์ ได้อย่างไร
ข้อเสนอง่าย ๆ แบบนี้: คำสั่งและพฤติกรรมการเขียนสคริปต์ที่ตัดสินใจว่าผู้ดูแลระบบจะใช้งานเซิร์ฟเวอร์หรือต่อสู้กับเซิร์ฟเวอร์: ค้นหา แปลง ถ่ายโอน และดูแลข้อความและกระบวนการด้วยเครื่องมือที่อยู่ในทุกการติดตั้งฐาน ส่งให้บริการ ความปลอดภัยเซิร์ฟเวอร์ Linuxและการจัดการเซิร์ฟเวอร์ ของเราดูแล มีการประเมินอย่างเหมาะสม ลงมือแบบสะอาด และมีคนเฝ้าตลอด 24 ชั่วโมง