SCP กับ SFTP ต่างกันอย่างไร


161

โดยปกติฉันใช้scpคำสั่งเพื่อถ่ายโอนไฟล์บน * nixes

ความแตกต่างระหว่าง SFTP และ SCP คืออะไร? ทั้งคู่ไม่ได้ทำงานกับ SSH หรือ

คำตอบ:


98

สรุป SCP สามารถใช้สำหรับถ่ายโอนไฟล์เท่านั้นและไม่สามารถโต้ตอบได้ (กล่าวคือทุกอย่างจะต้องระบุในบรรทัดคำสั่ง) SFTP มีความละเอียดมากขึ้นและอนุญาตให้คำสั่งแบบโต้ตอบทำสิ่งต่าง ๆ เช่นการสร้างไดเรกทอรีการลบไดเรกทอรีและไฟล์ (ทั้งหมดขึ้นอยู่กับการอนุญาตของระบบแน่นอน) ฯลฯ


34
เกี่ยวกับการโต้ตอบ: ความแตกต่างที่คุณอธิบายนั้นเกี่ยวกับไคลเอนต์ SFTP / SCP เฉพาะที่นำมาใช้ใน OpenSSH มันไม่เกี่ยวกับโปรโตคอลเอง เป็นไปได้อย่างสมบูรณ์ที่จะใช้ไคลเอนต์ SCP แบบโต้ตอบหรือไคลเอนต์ SFTP ที่ไม่โต้ตอบ
Martin Prikryl

4
อีกอย่างหนึ่ง: scp ไม่ทำงานหากเซิร์ฟเวอร์อนุญาตการเข้าถึง SFTP ผ่านสายForceCommand internal-sftpเท่านั้น ฉันคิดว่าPermitTTY noยังป้องกันการเข้าถึง scp แต่อนุญาตให้เข้าถึง sftp แม้ว่าฉันจะพิมพ์รหัสผ่านผิดพลาดทุกครั้งที่ฉันพยายาม แต่สองสิ่งนี้ไม่ควรป้องกันการ sftp ที่มา: ประสบการณ์ส่วนตัว
ecube

ฉันสามารถสันนิษฐานได้ว่าเซิร์ฟเวอร์ SFTP ใด ๆ ก็สามารถรับการถ่ายโอนของ SCP ได้หรือไม่?
gus

@ ไม่เห็นความคิดเห็นของอีคิวบ์
Pere

104

จากWikipedia :

เมื่อเทียบกับโปรโตคอล SCP รุ่นก่อนหน้าซึ่งอนุญาตให้ถ่ายโอนไฟล์ได้เท่านั้นโปรโตคอล SFTP ช่วยให้สามารถทำงานกับไฟล์ระยะไกลได้หลากหลาย - มันเหมือนกับโปรโตคอลระบบไฟล์ระยะไกลมากกว่า ความสามารถพิเศษของไคลเอนต์ SFTP เมื่อเปรียบเทียบกับไคลเอนต์ SCP รวมถึงการถ่ายโอนการขัดจังหวะรายชื่อไดเรกทอรีและการลบไฟล์จากระยะไกล [1] ด้วยเหตุผลเหล่านี้จึงค่อนข้างง่ายที่จะใช้ไคลเอนต์ GUI SFTP เมื่อเทียบกับไคลเอนต์ GUI SCP

และ

แม้ว่าทั้ง SCP และ SFTP จะใช้การเข้ารหัส SSH เดียวกันในระหว่างการถ่ายโอนไฟล์ที่มีค่าใช้จ่ายทั่วไปเท่ากัน แต่โดยทั่วไปแล้ว SCP นั้นเร็วกว่า SFTP ในการถ่ายโอนไฟล์โดยเฉพาะอย่างยิ่งในเครือข่ายที่มีความล่าช้าสูง สิ่งนี้เกิดขึ้นเนื่องจาก SCP ใช้อัลกอริธึมการถ่ายโอนที่มีประสิทธิภาพมากกว่าซึ่งไม่จำเป็นต้องรอการยืนยันแพ็คเก็ต สิ่งนี้นำไปสู่ความเร็วที่เร็วขึ้น แต่มีค่าใช้จ่ายที่ไม่สามารถขัดขวางการถ่ายโอนได้ดังนั้นไม่เหมือนกับ SFTP การถ่ายโอน SCP ไม่สามารถยกเลิกได้โดยไม่ต้องหยุดเซสชัน


18
"ปกติแล้ว SCP จะเร็วกว่า SFTP มากในการถ่ายโอนไฟล์"
คาห์ Bolen

3
"แต่มาด้วยค่าใช้จ่ายที่ไม่สามารถขัดขวางการถ่ายโอน" นั่นเป็นการแลกเปลี่ยนที่สำคัญทีเดียว
aaaaaa

aaaaaa, "โดยไม่ต้องยกเลิกเซสชัน" ซึ่งไม่ใช่เรื่องใหญ่หากเซสชันทั้งหมดใช้สำหรับการคัดลอกไฟล์ หากคุณกำลังคัดลอกไฟล์จำนวนมากไคลเอ็นต์สามารถรอให้สำเนาไฟล์แต่ละไฟล์เสร็จสิ้น
Victor Sergienko

9

จากมุมมองบรรทัดคำสั่งอย่างหมดจด:

  • scpไม่มีโหมดการโต้ตอบและไม่สามารถอ่านสคริปต์คำสั่งซึ่งหมายความว่าทุกอย่างจะต้องเขียนบนบรรทัดคำสั่ง
  • sftpมีโหมดการโต้ตอบและสามารถอ่านคำสั่งจากไฟล์

ข้อแตกต่างที่สำคัญอื่น ๆ ระหว่างคำสั่ง 2 คือsftpไม่สามารถใส่ไฟล์โลคัลไปยังตำแหน่งรีโมตโดยใช้บรรทัดคำสั่งเดียวแม้ว่าจะสามารถรับไฟล์รีโมตได้ในขณะที่scpสามารถทำทั้งสองอย่างได้

SFTP รับไฟล์ระยะไกล

sftp user@host:/path/to/remote.file [/path/to/local.file]

scp รับไฟล์ระยะไกล

scp user@host:/path/to/remote.file [/path/to/local.file]

scp ใส่ไฟล์ระยะไกล

scp /path/to/local.file user@host:[/path/to/remote.file]

2
วางไฟล์:sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
gdw2

3

SSH ( S ecure SH ell) เป็นโปรโตคอลเครือข่ายเข้ารหัสลับเพื่ออนุญาตให้เข้าสู่ระบบจากระยะไกลและบริการเครือข่ายอื่น ๆ เพื่อทำงานอย่างปลอดภัยผ่านเครือข่ายที่ไม่ปลอดภัย

ความแตกต่าง: SFTP ทำงานในโหมดโต้ตอบ (เซสชัน) และ SCP ทำงานบนแบบไม่โต้ตอบ การใช้ SFTP ทำให้เราสามารถเข้าถึงระบบไฟล์ระยะไกลเช่นการสร้างการลบและการแสดงรายชื่อไฟล์

ความคล้ายคลึงกัน:ทั้งสอง SCP ( S ecure CลอกP rotocol) และSFTP ( S SH F ile T ransfer P rotocol) เป็นโปรโตคอลเครือข่ายที่สนับสนุนการจัดการไฟล์ระหว่างโฮสต์บนเครือข่าย ทั้งสองใช้ SSH

มากกว่า


2

ความแตกต่างส่วนใหญ่ของทั้งสองโปรโตคอลนั้นได้รับการกล่าวถึงแล้วในคำตอบอื่น ๆ และอื่น ๆ อีกมากมาย verbosely ในhttps://unix.stackexchange.com/q/8707/19088

ความแตกต่างอีกอย่างหนึ่งตามเอกสารของขดคือโปรโตคอล SCP นั้นไม่สามารถพกพาได้และมักจะทำงานระหว่างระบบยูนิกซ์เท่านั้น

อย่างไรก็ตามCurlใช้ทั้งโปรโตคอลและไม่เหมือนกับการใช้งานไคลเอนต์ OpenSSH SFTP ที่เป็นค่าเริ่มต้นมันไม่สามารถโต้ตอบได้ทั้ง SFTP และ SCP

และโปรดทราบว่ายังมีโปรโตคอลFISHซึ่งช่วยให้คุณถ่ายโอนไฟล์ผ่าน SSH โดยไม่ต้องใช้ SCP หรือ SFTP เท่าที่ผมรู้ว่าปลาจะไม่เป็นที่นิยมมากในปัจจุบันการดำเนินผู้จัดการไฟล์เพียงไม่กี่ ( ผู้บัญชาการเที่ยงคืนและบางอย่างที่ KDE-based) และlftp


2
"ความแตกต่างอีกอย่างหนึ่งตามเอกสารของขดคือโปรโตคอล SCP นั้นไม่สามารถพกพาได้และมักจะทำงานระหว่างระบบ Unix เท่านั้น" คำตอบของคุณในส่วนนี้คือการที่ SCP GUI ที่ได้รับความนิยมมากที่สุดเรียกว่า WinSCP และ - คุณเดาได้ - เป็นโปรแกรม Windows
brett

1
@ เบร็ทลูกค้าที่นิยมมากที่สุดน่าจะเป็น scp ของ OpenSSH ฉันจะบอกว่ามันถูกปรับใช้อย่างสูง WinSCP เป็นไคลเอนต์ SCP / SFTP / etc แต่ปัจจุบันส่วนใหญ่ใช้เป็นไคลเอนต์ FTP (S): "ในเดือนมิถุนายน 2003 เวอร์ชัน 3.0 เปิดตัวแนะนำการสนับสนุนทางเลือกกับ SCP, โปรโตคอล SFTP เมื่อเวลาผ่านไปมันวิวัฒนาการมาจากทางเลือก ถึงโปรโตคอลหลักแม้จะมีสิ่งนี้ชื่อที่ได้รับการยอมรับเป็นอย่างดีคือ“ WinSCP” ก็ตาม (จาก History of WinSCP: winscp.net/eng/docs/project_history)
Pere
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.