To mount a remote SSHFS directory automatically in Debian, configure noninteractive SSH authentication and add an SSHFS entry to /etc/fstab. With systemd, you can either connect during boot or activate an automount at boot and connect when the directory is first accessed. The second approach is useful when the remote server or network may be unavailable during startup.
This reference uses Debian 13 “trixie” documentation reviewed on October 9, 2026, including SSHFS 3.7.3 and systemd 257 documentation. The commands are configuration examples, not results from a tested deployment. Check your installed manuals if you use another release.
Choose when the SSHFS connection should start
Requirement Configuration choice Expected behavior Make the directory available on demand after boot Use x-systemd.automount The first access triggers the remote mount. Attempt the remote connection during boot Omit x-systemd.automount systemd starts the mount as part of startup. Allow startup to continue if storage is unavailable Use nofail The mount is not a required boot dependency. An application must wait for this storage Add a dependency to that application’s service The application starts only after the mount succeeds.
The main example uses an on-demand mount. The distinction matters: an active automount does not mean an SSHFS connection already exists. See Debian’s systemd automount manual for the relationship between the automount and its matching mount unit.
Before you start
The Debian client uses systemd and you have sudo access. The remote account supports SFTP and can access the intended directory. The client can reach the remote host, including any required VPN or jump host. You have a way to verify the remote server’s SSH host-key fingerprint. The local mount point is empty and is not a critical system directory.
Replace files@storage.example.net:/srv/data with your remote username, hostname, and directory. The hostname is a placeholder. The local mount point is /mnt/remote; the dedicated key is /root/.ssh/sshfs_boot.
This is an administrator-managed system mount. It runs locally as root but logs into the remote server as files, not remote root. The SSHFS project documentation generally recommends running ordinary interactive mounts as a regular user. A system boot mount requires deliberate credential and access management.
1. Install the client packages
sudo apt update
sudo apt install sshfs openssh-client
sshfs --version
systemctl --version
Install SSHFS on the Debian client. The remote system needs working SFTP service; it does not need an SSHFS installation just to serve files. If package installation fails, resolve the repository or connectivity issue before editing boot configuration.
Install the SSHFS client and OpenSSH tools on Debian.
2. Prepare the mount point and dedicated key
sudo install -d -m 0700 /root/.ssh
sudo mkdir -p /mnt/remote
sudo ssh-keygen -t ed25519 -f /root/.ssh/sshfs_boot -N ''
sudo chmod 0600 /root/.ssh/sshfs_boot
อย่าเขียนทับคีย์ที่มีอยู่แล้วในเส้นทางนั้น เลือกชื่ออื่นหากจำเป็น และใช้ชื่อนั้นอย่างสม่ำเสมอในส่วนถัดไป รหัสผ่านที่ว่างเปล่านั้นเป็นไปโดยเจตนาสำหรับตัวอย่างการปลดล็อกอัตโนมัตินี้ เนื่องจากไม่มีบุคคลใดพร้อมที่จะปลดล็อกคีย์ในระหว่างการบูต ปกป้องไคลเอ็นต์และให้สิทธิ์การเข้าถึงไดเร็กทอรีแก่บัญชีระยะไกลเฉพาะที่จำเป็นเท่านั้น หากนโยบายของคุณกำหนดให้ใช้คีย์ที่เข้ารหัส ให้จัดเตรียมกลไกการปลดล็อกอัตโนมัติแบบจัดการแทน
ตัวเลือกการสร้างคีย์มีรายละเอียดอยู่ในคู่มือ ssh-keygen ของ Debian คีย์ที่ปลดล็อกใน SSH agent บนเดสก์ท็อปของคุณจะไม่สามารถใช้งานได้กับระบบเมานต์โดยอัตโนมัติ
เตรียมไดเร็กทอรีในเครื่องให้พร้อมก่อนสร้างคีย์บูตเฉพาะ
3. อนุญาตคีย์และตรวจสอบ SFTP แบบอัตโนมัติ
sudo ssh-copy-id -i /root/.ssh/sshfs_boot.pub files@storage.example.net
ระหว่างการตั้งค่าการเชื่อมต่อนี้ ให้เปรียบเทียบลายนิ้วมือของคีย์โฮสต์ที่แสดงกับค่าที่ได้รับจากผู้ดูแลระบบเซิร์ฟเวอร์ผ่านช่องทางที่เชื่อถือได้ก่อนที่จะยอมรับ คำสั่งนี้จะทำงานในฐานะผู้ใช้ root ในเครื่อง ดังนั้นบันทึกคีย์โฮสต์ตามปกติจะถูกจัดเก็บไว้ในไฟล์ SSH ของ root หากการตั้งค่าโดยใช้รหัสผ่านถูกปิดใช้งานบนเซิร์ฟเวอร์ ให้ผู้ดูแลระบบติดตั้งคีย์สาธารณะแทน
ถัดไป ทดสอบ SFTP โดยใช้ข้อมูลประจำตัวและไฟล์ host-key เดียวกันกับที่การเมานต์บูตจะใช้:
sudo sftp -i /root/.ssh/sshfs_boot \
-o IdentitiesOnly=yes -o BatchMode=yes \
-o StrictHostKeyChecking=yes \
-o UserKnownHostsFile=/root/.ssh/known_hosts \
files@storage.example.net
ที่พรอมต์ SFTP ให้ใช้ls /srv/dataจากนั้นbyeวิธีนี้ต้องใช้งานได้โดยไม่ต้องใส่รหัสผ่านหรือการยืนยันBatchMode=yesจะป้องกันการตรวจสอบสิทธิ์แบบโต้ตอบ การตั้งค่าคีย์โฮสต์แบบชัดเจนจะรักษาการตรวจสอบสิทธิ์ไว้ ตัวเลือกเหล่านี้มีระบุไว้ในคู่มือการกำหนดค่าไคลเอ็นต์ OpenSSH
สำหรับการใช้พอร์ตที่ไม่ใช่พอร์ตเริ่มต้น ให้ใช้-p 2222ร่วมกับ ssh-copy-id, -P 2222sftp และport=2222ในตัวเลือก SSHFS หากจำเป็นต้องใช้ jump host ให้กำหนดค่าและทดสอบเส้นทางนั้นภายใต้บริบท SSH ของ root ด้วย
อนุญาตใช้คีย์สาธารณะเฉพาะสำหรับบัญชีระยะไกลตัวอย่าง ตรวจสอบลายนิ้วมือของโฮสต์ระหว่างการตั้งค่า
4. พิสูจน์ว่าการติดตั้งแบบแมนนวลใช้งานได้จริง
sudo sshfs files@storage.example.net:/srv/data /mnt/remote \
-o IdentityFile=/root/.ssh/sshfs_boot,IdentitiesOnly=yes,BatchMode=yes \
-o StrictHostKeyChecking=yes,UserKnownHostsFile=/root/.ssh/known_hosts
sudo ls /mnt/remote
sudo umount /mnt/remote
ตรวจสอบว่ารายการดังกล่าวเป็นของไดเร็กทอรีระยะไกลที่ต้องการ ตัวอย่างนี้อนุญาตให้เฉพาะเจ้าของเมานต์ในเครื่อง (root) เท่านั้นที่เข้าถึงได้ ดังนั้นให้ใช้ sudo ในการตรวจสอบ เสร็จสิ้นโดยการยกเลิกการเมานต์ก่อนเริ่มการกำหนดค่าที่จัดการโดย systemd ปิดเชลล์และแอปพลิเคชันที่ใช้ไดเร็กทอรีนั้นหากมีการใช้งานอยู่
SSHFS ใช้สิทธิ์ของบัญชีผู้ใช้ระยะไกล การเป็น root บนเครื่องไคลเอนต์ไม่ได้ให้สิทธิ์เพิ่มเติมบนเซิร์ฟเวอร์ แก้ไขข้อผิดพลาดเกี่ยวกับการตรวจสอบสิทธิ์ SFTP หรือเส้นทางระยะไกลที่นี่ก่อนที่จะบันทึกการตั้งค่าอย่างถาวร
หน้าจอเทอร์มินัลแสดงตัวอย่างการเมานต์แบบแมนนวล โปรดใช้คำสั่งและตัวเลือกการตรวจสอบที่สมบูรณ์ตามที่ระบุไว้ในข้อความ
5. เพิ่มรายการ fstab แบบถาวร
sudo cp -a /etc/fstab /etc/fstab.sshfs-backup
sudoedit /etc/fstab
หากมีไฟล์สำรองข้อมูลอยู่แล้ว ให้เลือกชื่อไฟล์อื่น เพิ่มข้อความต่อไปนี้เป็นบรรทัดเดียว โดย แทนที่ตัวอย่างเซิร์ฟเวอร์และเส้นทาง:
files@storage.example.net:/srv/data /mnt/remote sshfs _netdev,nofail,x-systemd.automount,x-systemd.mount-timeout=30s,IdentityFile=/root/.ssh/sshfs_boot,IdentitiesOnly=yes,BatchMode=yes,StrictHostKeyChecking=yes,UserKnownHostsFile=/root/.ssh/known_hosts,ConnectTimeout=10,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 0 0
คู่มือ SSHFS ของ Debian ระบุsshfsประเภทระบบไฟล์ fstab และยอมรับfuse.sshfsเพื่อความเข้ากันได้ ฟิลด์สุดท้ายจะปิดใช้งานการกำหนดเวลาการดัมพ์และการตรวจสอบระบบไฟล์สำหรับรายการนี้ โปรดดูเอกสารอ้างอิงรูปแบบ fstab หากเส้นทางมีช่องว่าง
ตัวเลือก วัตถุประสงค์ _netdevจัดประเภทการติดตั้งนี้เป็นแบบพึ่งพาเครือข่าย nofailให้บูตเครื่องต่อไปโดยไม่จำเป็นต้องใช้การเมานต์นี้ x-systemd.automountสร้างการเมานต์อัตโนมัติที่ทำงานเมื่อมีการเข้าถึง x-systemd.mount-timeout=30sจำกัดระยะเวลารอของคำสั่ง mount เริ่มต้น ConnectTimeout=10การสร้างการเชื่อมต่อ SSH ของ Bounds reconnectและการตั้งค่าเซิร์ฟเวอร์ทำงานอยู่ช่วยตรวจจับการเชื่อมต่อที่ขาดและเชื่อมต่อใหม่
ตัวเลือกเฉพาะของ systemd มีเอกสารอธิบายไว้ในคู่มือการเมานต์ systemd ของ Debian ระยะเวลาหมดเวลาการเมานต์ไม่ได้กำหนดเส้นตายสำหรับการดำเนินการไฟล์ทุกครั้งในภายหลัง
สำรองข้อมูล fstab ก่อนเพิ่มรายการ SSHFS แบบถาวร
6. รีโหลด systemd และเปิดใช้งาน automount
sudo findmnt --verify --verbose
sudo systemctl daemon-reload
sudo systemctl start mnt-remote.automount
systemctl status mnt-remote.automount
sudo ls /mnt/remote
findmnt -t fuse.sshfs
ตรวจสอบข้อความยืนยันก่อนดำเนินการต่อคู่มือ findmnt อธิบายการตรวจสอบ fstab ซึ่งเป็นการตรวจสอบการกำหนดค่า ไม่ใช่การตรวจสอบว่าข้อมูลประจำตัวระยะไกลใช้งานได้หรือไม่ การเข้าถึงไดเร็กทอรีจะทำการทดสอบการเชื่อมต่อแยกต่างหาก
ชื่อหน่วยข้างต้นตรงกับ/mnt/remote. สำหรับเส้นทางอื่น ให้กำหนดชื่อการเมานต์ด้วยsystemd-escape --path --suffix=mount /your/path. หน่วยที่สร้างจาก fstab ไม่จำเป็นต้องใช้systemctl enableคำสั่ง แยกต่างหาก
หากต้องการให้มีการพยายามเชื่อมต่อระหว่างการบูต ให้ลบออกx-systemd.automountจากรายการ หลังจากปล่อยผู้ใช้ของไดเร็กทอรีแล้ว ให้หยุดการเมานต์อัตโนมัติและหน่วยเมานต์ โหลด systemd ใหม่ และเริ่มต้นหน่วยเมานต์ที่ตรงกัน เก็บไว้nofailหากต้องการให้การจัดเก็บข้อมูลเป็นตัวเลือก
รีโหลด systemd และเริ่มหน่วย automount ที่สร้างขึ้น
7. ตรวจสอบพฤติกรรมหลังจากรีบูตเครื่อง
รีบูตเครื่องในช่วงเวลาบำรุงรักษาที่เหมาะสม สำหรับการตั้งค่าแบบตามความต้องการ ให้ตรวจสอบการเมานต์อัตโนมัติก่อน จากนั้นจึงเข้าถึงไดเร็กทอรี:
systemctl status mnt-remote.automount
sudo ls /mnt/remote
systemctl status mnt-remote.mount
findmnt -t fuse.sshfs
สัญญาณที่คาดหวังคือ การเชื่อมต่ออัตโนมัติ (automount) ที่ทำงานอยู่หลังจากการเริ่มต้นระบบ และการเชื่อมต่อ SSHFS ที่แท้จริงหลังจากการเข้าถึง การมีautofsรายการเพียงอย่างเดียวไม่ได้พิสูจน์ว่าไฟล์ระยะไกลเชื่อมต่ออยู่ ตรวจสอบไฟล์หรือไดเร็กทอรีระยะไกลที่รู้จัก ไม่ใช่เพียงแค่ตรวจสอบว่าโฟลเดอร์จุดเชื่อมต่อในเครื่องมีอยู่จริง
หากแอปพลิเคชันต้องการพื้นที่จัดเก็บข้อมูลนี้ก่อนเริ่มต้น ให้เพิ่ม drop-in ลงในบริการของแอปพลิเคชันนั้น โดยมีเนื้อหาดังนี้:
[Unit]
RequiresMountsFor=/mnt/remote
การพึ่งพาตัวนี้ ซึ่งมีเอกสารอธิบายไว้ในsystemd.unit จะดึงและจัดลำดับการเมานต์ที่จำเป็น รีโหลด systemd และทดสอบการเริ่มต้นแอปพลิเคชันนั้นแยกต่างหาก แอปพลิเคชันนั้นยังต้องการสิทธิ์การเข้าถึงในเครื่องที่เหมาะสมด้วย
เข้าถึงไดเร็กทอรี จากนั้นตรวจสอบการเมานต์ SSHFS จริงและสถานะของหน่วย (unit status)
8. แก้ไขปัญหาตามประเภทของความล้มเหลว
sudo journalctl -b -u mnt-remote.mount
sudo journalctl -b -u mnt-remote.automount
อาการ ตรวจสอบถัดไป การตรวจสอบสิทธิ์ด้วยคีย์สาธารณะล้มเหลว ทำการทดสอบ SFTP ในบริบท root ซ้ำอีกครั้ง ตรวจสอบคีย์ที่เลือกและการอนุญาตการเข้าถึงระยะไกล การตรวจสอบคีย์โฮสต์ล้มเหลว ตรวจสอบลายนิ้วมือของเซิร์ฟเวอร์และรายการ known_hosts ของ root ตรวจสอบคีย์ที่เปลี่ยนแปลงก่อนทำการอัปเดต การแก้ไขชื่อหรือการเชื่อมต่อล้มเหลว ตรวจสอบ DNS, การกำหนดเส้นทาง, การเข้าถึงพอร์ต, การเริ่มต้น VPN และความพร้อมใช้งานของ jump-host คำสั่ง sudo สามารถอ่านไฟล์ได้ แต่ผู้ใช้ภายในเครื่องไม่สามารถทำได้ ตรวจสอบนโยบายการเข้าถึง FUSE และแผนผังความเป็นเจ้าของ Mount กำลังยุ่งอยู่ ปิดกระบวนการที่มีไดเร็กทอรีการทำงานหรือไฟล์ที่เปิดอยู่ซึ่งอยู่ภายใต้จุดเชื่อมต่อ (mount point)
network-online.targetเป็นเพียงจุดเริ่มต้นการซิงโครไนซ์ ไม่ใช่การรับประกันว่าเซิร์ฟเวอร์หรือ VPN ใดๆ จะสามารถเข้าถึงได้คำอธิบายเกี่ยวกับ network-online ใน systemd อธิบายถึงข้อจำกัดนั้นไว้แล้ว
สำหรับการเข้าถึงโดยผู้ใช้ภายในเครื่องโดยเจตนา ให้พิจารณาเพิ่มallow_other,default_permissions,uid=1000,gid=1000โดยแทนที่ด้วย ID ภายในเครื่องจริง วิธีนี้จะเปิดการเข้าถึงได้มากกว่าเจ้าของเมานต์ ในขณะที่การตรวจสอบสิทธิ์ของเคอร์เนลยังคงมีผล ตัวเลือก UID/GID จะเปลี่ยนความเป็นเจ้าของที่แสดง ไม่ใช่ความเป็นเจ้าของฝั่งเซิร์ฟเวอร์ การเมานต์รูทไม่จำเป็นต้องมีuser_allow_otherใน fuse.conf นโยบายดังกล่าวอนุญาตให้เมานต์ที่ไม่ใช่รูทขอสิทธิ์การเข้าถึงที่กว้างขึ้น โปรดดูคู่มือสิทธิ์ FUSE ทดสอบอีกครั้งในฐานะผู้ใช้แอปพลิเคชันที่ต้องการหลังจากเปลี่ยนตัวเลือกเหล่านี้แล้ว
หลังจากแก้ไขปัญหาต้นเหตุแล้ว ให้ล้างสถานะการเมานต์ที่ล้มเหลวและลองเข้าถึงอีกครั้ง:
sudo systemctl reset-failed mnt-remote.mount
sudo ls /mnt/remote
การเชื่อมต่อใหม่ (Reconnect) ไม่ใช่การกู้คืนที่โปร่งใสสำหรับทุกแอปพลิเคชัน: ไฟล์ที่เคยเปิดไว้ก่อนหน้านี้อาจใช้งานไม่ได้และอาจต้องเปิดใหม่ การเขียนข้อมูลที่ถูกขัดจังหวะอาจทำให้ข้อมูลสูญหาย เลือกรูปแบบการจัดเก็บข้อมูลอื่นหากปริมาณงานของคุณต้องการการรับประกันความปลอดภัยจากความล้มเหลวที่แข็งแกร่งกว่านี้
อ่านบันทึกการติดตั้งก่อน จากนั้นจึงแก้ไขสาเหตุของปัญหาและล้างสถานะที่ล้มเหลว
รายการตรวจสอบการปฏิบัติงานและการย้อนกลับ
SFTP แบบอัตโนมัติทำงานโดยใช้ข้อมูลประจำตัวการบูตที่ถูกต้อง คีย์โฮสต์ได้รับการตรวจสอบและจัดเก็บไว้ในไฟล์ที่กำหนดแล้ว รายการในไฟล์ fstab จะทำการวิเคราะห์และไม่มีรหัสผ่านหรือเนื้อหาของคีย์ส่วนตัวอยู่ภายใน การเข้าถึงหลังจากรีบูตจะแสดงรายการระยะไกลตามที่ต้องการ ผู้ใช้หรือบริการในพื้นที่นั้น ๆ สามารถอ่านไฟล์ที่ต้องการได้ คุณเข้าใจวิธีการที่แอปพลิเคชันจัดการกับพื้นที่จัดเก็บข้อมูลที่ไม่พร้อมใช้งานแล้ว
หากต้องการปิดใช้งานการกำหนดค่า ให้หยุดแอปพลิเคชันที่ใช้ไดเร็กทอรีนั้น หยุดการ ทำงานของโปรแกรม mnt-remote.automountและmnt-remote.mountลบรายการนี้ออกจากไฟล์ fstab เท่านั้น จากนั้นsudo systemctl daemon-reloadเรียกใช้คำสั่ง โปรดคงรายการอื่นๆ ในไฟล์ fstab ไว้ การลบการกำหนดค่าการเมานต์จะไม่ลบไฟล์ระยะไกลหรือเพิกถอนคีย์ที่ได้รับอนุญาตจากระยะไกล