SSHFS - ฟอร์กของ SSHFS ที่ยังมีการดูแลอยู่ในปัจจุบัน
(github.com/deadbeefsociety)- SSHFS ช่วยให้สามารถเมานต์ระบบไฟล์ระยะไกลผ่าน SFTP ได้ และเนื่องจากเซิร์ฟเวอร์ SSH ส่วนใหญ่รองรับและเปิดใช้การเข้าถึง SFTP เป็นค่าเริ่มต้น จึงสามารถใช้งานได้โดยไม่ต้องตั้งค่าฝั่งเซิร์ฟเวอร์เพิ่มเติม
- ฟอร์กสำหรับการบำรุงรักษา deadbeefsociety/sshfs ถูกเก็บถาวรแล้ว เนื่องจาก SSHFS ไม่ได้อยู่ในสภาพถูกปล่อยทิ้งอีกต่อไป และเวอร์ชันที่ควรใช้งานคือ libfuse/sshfs
- SSHFS ถูกรวมอยู่ในดิสทริบิวชัน Linux หลัก ๆ และมีประวัติการใช้งานจริงในโปรดักชันบนหลายระบบมาเป็นเวลานาน แต่ปัจจุบันไม่มีผู้มีส่วนร่วมที่ทำงานอย่างสม่ำเสมอ และปัญหาที่ทราบอยู่มีอยู่ใน bugtracker
- ผู้ดูแลในปัจจุบันยังคงรวม pull request และออกรีลีสเป็นระยะ แต่ไม่มีทรัพยากรสำหรับการพัฒนาเพิ่มเติมนอกเหนือจากการจัดการ ปัญหาที่มีผลกระทบสูง และรายงานบั๊กที่ไม่มี pull request หรือปัญหาที่ไม่ร้ายแรงอาจไม่ได้รับการตอบกลับ
- รูปแบบการใช้งานพื้นฐานคือ
sshfs [user@]hostname:[directory] mountpointและแนะนำให้รันในฐานะผู้ใช้ทั่วไป โดย mountpoint ต้องเป็นของผู้ใช้นั้น- หากไม่ระบุชื่อผู้ใช้ จะใช้ชื่อผู้ใช้ในเครื่อง
- หากไม่ระบุไดเรกทอรี จะเมานต์โฮมไดเรกทอรีฝั่งรีโมต
- หากต้องใช้รหัสผ่าน
sshที่ sshfs เรียกใช้งานจะเป็นผู้ขอรหัสผ่าน
- สามารถระบุตัวเลือกของ ssh ได้หลายแบบ รวมถึง
-oport=PORTและการยกเลิกเมานต์บน Linux ใช้fusermount -u mountpointส่วนบน BSD และ macOS ใช้umount mountpoint - การบิลด์ต้องใช้ libfuse 3.1.0 ขึ้นไป หรืออินเทอร์เฟซที่เข้ากันได้กับ libfuse3, Glib ที่มี development headers, Meson 0.38 ขึ้นไป และ Ninja ส่วนการรันการทดสอบต้องใช้ Python module
py.test
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ถ้าต้องการให้ทำงานใน userspace และใช้ Emacs ได้ ก็มี TRAMP “Transparent Remote (file) Access, Multiple Protocol”: https://www.gnu.org/software/tramp/
ผมใช้บ่อยเวลาเข้าถึงไฟล์บนเซิร์ฟเวอร์จาก MacBook Pro
cdเข้าไปยังไดเรกทอรีบนระบบรีโมตแล้ว สามารถcpไฟล์จากไดเรกทอรีทำงานปัจจุบันไปยังเครื่องโลคัลหรือรีโมตอื่นได้ และในทางกลับกันก็สามารถคัดลอกจากโลคัลไปยังไดเรกทอรีทำงานรีโมตปัจจุบันได้ด้วยก่อนใช้ TRAMP ต้อง SSH เข้ารีโมต, ใช้
cdกับlsหาตำแหน่งที่จะคัดลอก, ตัด SSH session แล้วค่อยใช้scpหรือrsyncย้ายไฟล์ และส่วนใหญ่ต้อง SSH กลับเข้าไปอีกdired,eshell,magitด้วยน่าสนใจนะ ผมนึกมาตลอดว่า sshfs เป็นส่วนหนึ่งของ OpenSSH แต่ก็ได้เรียนรู้อะไรใหม่ทุกวัน
sshfs ที่ใช้ใน Slackware ก็ดูเหมือนถูกปล่อยทิ้งไว้เหมือนกัน: https://github.com/libfuse/sshfs
ดูจากข้อความที่อ้างในลิงก์แล้ว ก็สงสัยว่าโปรเจกต์นี้จะกลายเป็น “ผู้สืบทอด” รายต่อไปหรือไม่
สำหรับข้อมูลเพิ่มเติม บน Mac ผมใช้ macFUSE + sshfs มาหลายปี แต่ตอนนี้ติดตั้งแค่เครื่องมือ Mountain Duck ที่ยอดเยี่ยมแล้วใช้แทน สามารถเข้าถึง SFTP endpoint ผ่าน Finder และ mount point ได้
เป็นซอฟต์แวร์ที่ดีมาก และสำหรับผมคือของจำเป็น
ไม่กี่เดือนก่อนผมลอง ExpanDrive/StrongSync เพราะเรื่องนี้ และเพิ่งได้ยินชื่อ Mountain Duck ครั้งแรกตอนนี้ ผมชอบ Cyberduck อยู่แล้ว กำลังจะลองใช้ดู ถ้ามันทำงานได้ดีอยู่แล้ว ก็อยากให้ช่วยอัปเดตหน้านั้นเพื่อคนอื่น ๆ ด้วย นอกนั้นผมก็เป็นลูกค้าที่พอใจ
implementation ของ sshfs ก็มีอยู่ที่ https://github.com/macos-fuse-t/fuse-t/wiki#sample-filesyste...
Libfuse/SSHFS บน macOS ใช้ค่อนข้างลำบากมาตั้งแต่หลายปีก่อน ผมเลยย้ายมาใช้ Mountain Duck เช่นกัน
เสียดายที่ sshfs ไม่ได้รับการดูแลต่อแล้ว สมัยเรียนผมเคยใช้ sshfs เพื่อแก้โค้ดด้วย Vim plugin จำนวนมากของตัวเอง โดยไม่ต้องติดตั้งปลั๊กอิน Vim ทั้งหมดบนเซิร์ฟเวอร์คำนวณระยะไกลของโรงเรียน
แปลกใจที่ระบบทำงานได้ลื่นไหลกว่าที่คิดมาก
ผมคิดว่า SFTP เป็นโปรโตคอลที่ดีแต่ถูกประเมินค่าต่ำไป บางกรณีการ mirror แบบสองทิศทางสมเหตุสมผลกว่าการ replicate file tree จากฝั่งหนึ่งไปอีกฝั่งหนึ่ง
หลังจาก fork โค้ด SSHFS แล้วลองดู ผมก็รวบรวมเอกสารที่เกี่ยวข้องและความคิดส่วนตัวไว้ที่ https://hackmd.io/@q/sftp-over-ws และคอยดูแลต่อ
ทั้งเซิร์ฟเวอร์ OpenSSH และ GNU lsh ต่างก็ให้บริการ protocol version เก่าเท่านั้น น่าจะเป็น v2 ความเก่านี้เป็นการเลือกโดยตั้งใจ: https://marc.info/?l=openssh-unix-dev&m=168488976013498&w=2
ชุดเทคโนโลยีต่างกันนิดหน่อย แต่ช่วงหนึ่งผมใช้ NFS บน WireGuard ได้ค่อนข้างพอใจมาก
ฟีเจอร์ของ filesystem ก็ implement ไว้มากกว่า ทำให้รายงาน
dfสะท้อนการใช้งาน filesystem ระยะไกลได้ถูกต้องนอกจากนี้ NFSv4 ยังมี “delegations” ที่ให้สิทธิ์ควบคุมไฟล์แบบสมบูรณ์แก่ client ในรูปของ lease ที่หมดอายุได้ client NFS รุ่นใหม่ยังมี “polite delegations” ที่ต่ออายุ lease โดยนัยด้วย
SSHFS สะดวกมากสำหรับการ mount แบบ “เร็วและพอใช้” ด้วยการตั้งค่าน้อยที่สุด
หลังจาก sync ไฟล์ด้วยยูทิลิตี storage DVFS ที่เรียบง่ายมากแล้วก็ไม่หันกลับไปอีก ผมชอบมีสำเนาหลายชุดกระจายอยู่หลายที่
ตอนนี้เวลาต้องใช้ฟังก์ชันแบบ sshfs ส่วนใหญ่จะใช้ rclone mount ประสิทธิภาพ ความเสถียร และตัวเลือกแคชดีกว่า
sshfs ก็อาจมีข้อจำกัดแบบเดียวกันได้
น่าเสียดาย แต่ฟอร์กนี้ดูไม่ค่อยแอ็กทีฟเท่าไร คอมมิตล่าสุดคือเดือนมีนาคม และกิจกรรมใน PR กับ issue ก็แทบไม่มี
คงไม่ฝากความหวังไว้กับตัวนี้
Nautilus หรือ file explorer ของ Ubuntu รองรับ การเมานต์โฟลเดอร์ SFTP ดูเหมือนภายในจะใช้
gvfsเพราะ SFTP ใช้การเชื่อมต่อ SSH สำหรับถ่ายโอนไฟล์ เลยไม่เห็นความต่างด้าน UI เมื่อเทียบกับ SSHFS
จำไม่ค่อยได้แล้ว
มีใครเคยใช้ rclone หรือ sshfs ร่วมกับ macFUSE/osxfuse บน Mac OS X ไหม?
แต่ละเซิร์ฟเวอร์มีสคริปต์เล็ก ๆ ของตัวเอง เช่น
mount_fooserver.sh:umount -f ~/mounts/fooserversshfs -o kill_on_unmount,reconnect,allow_other,defer_permissions,direct_io username@server:/ ~/mounts/fooserver -ovolname=fooขั้นตอนตั้งค่าค่อนข้างเหมือนการผจญภัย และมีอยู่หลายครั้งที่สงสัยว่าทำถูกไหม แต่พอทำต่อไปก็ใช้งานได้ดี