Automount sshfs โดยใช้ fstab โดยไม่ต้อง mount -a


24

โปรดพิจารณาบรรทัด fstab ต่อไปนี้ (ตัวแบ่งบรรทัดสำหรับการอ่านได้):

sshfs#user@192.168.1.123:/home/user/ 
/home/user/Server/ 
fuse    
auto,user,_netdev,reconnect,uid=1000,gid=1000,IdentityFile=/home/user/.ssh/id_rsa,idmap=user,allow_other  
0 

มันใช้งานได้ดี แต่การรีบูตทุกครั้งที่ฉันต้องใช้mount -aเพื่อเมานต์เซิร์ฟเวอร์ (หรือคลิกที่ไอคอนที่เหมาะสมใน Thunar เพื่อเมานต์สิ่งของ)

เป็นไปได้หรือไม่ที่จะติดตั้งไดเรกทอรี ssh ของฉันทันทีที่บูตเครื่อง?

ฉันใช้ Xubuntu 13.10

คำตอบ:


18

ไวยากรณ์ที่ถูกต้องสำหรับการติดตั้ง sshfs ที่ใช้ร่วมกันในการบูตในไฟล์ / etc / fstab คือ

 USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY  /LOCAL/MOUNTPOINT  fuse.sshfs _netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0 0

มันคือการปรับตัวจะไม่ใช่ systemd distros ของคำสั่งที่มีอยู่ที่นี่ หากคุณอยู่ในdistro systemd (Arch, Fedora, OpenSUSE, ... ) คำสั่งที่เหมาะสมคือ:

USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY  /LOCAL/MOUNTPOINT  fuse.sshfs x-systemd.automount,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0 0

ดูเหมือนว่าบรรทัด fstab เกือบจะเหมือนกับของฉัน (ยกเว้นสิทธิ์และตัวเลือก symlink) อย่างไรก็ตามฉันลองใช้และไม่ประสบความสำเร็จ ฉันยังต้อง exec mount -aหลังจากบู๊ต
user21886

ที่ตลกก็แค่ทำงานให้กับผู้ใช้อื่นsuperuser.com/questions/666739/... คุณได้ตรวจสอบว่าคุณเป็นผู้ใช้ 1,000,1000 คนและที่สำคัญของคุณใน id_rsa?
MariusMatutiae

ใช่และมันใช้งานได้ 100% แต่ฉันต้องทำงานmount -aหลังจากบู๊ต ฉันกำลังจะเพิ่มmount -aautostart
user21886

อาจเป็นไปได้ว่าสิ่งนี้จะเกิดขึ้นก่อนที่เครือข่ายของคุณจะปรากฏขึ้นหลังจากทำการเมานท์เมื่อบูต ลองเพิ่มสองบรรทัดใน rc.local sleep 10: mount -a
MariusMatutiae

ยังไม่ประสบความสำเร็จ Perpaphs ปัญหาคือการกำหนดค่าของฉัน - เครือข่ายอีเธอร์เน็ตของฉันคือ 5-15 วินาทีหลังจาก xfce (และเดสก์ท็อป env.) ขึ้น ฉันไม่รู้ว่าทำไมอูบุนตูจึงทำงานเช่นนี้ arch ของฉันเชื่อมต่อก่อน xfce เป็นต้น
user21886

4

ลองใช้ตัวเลือกdelay_connect

สายเต็ม / etc / fstab:

USER@HOSTNAME:/REMOTE/ /LOCAL/ fuse.sshfs delay_connect,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0 0

2

เหล่านั้นdelay_connect, _netdev... ถูกต้อง แต่จะไม่ทำงานจนกว่าคุณจะปรับเปลี่ยนเครือข่ายเพื่อให้เกิดขึ้นใน (หรือก่อนหน้า) หน้าต่างเล็ก ๆ เวลานั้นเมื่อมีการประมวลผล / etc / fstab เมื่อการประมวลผลสิ้นสุดลงและการเชื่อมต่อเครือข่ายเกิดขึ้นในภายหลังคุณจะต้องใช้mount -a(หรือเพื่อน)

ในกรณีส่วนใหญ่ (และฉันยัง) network-managerปัญหาที่เกิดขึ้นเพราะมันทำให้เครือข่ายขึ้นหลังจากเข้าสู่ระบบโดยค่าเริ่มต้น มันสามารถปรับแต่งเพื่อนำมาก่อนหน้านี้ในเวลาบูต หากฉันจำได้อย่างถูกต้องสิ่งที่คุณต้องทำคือตรวจสอบตัวเลือกAvailable to all usersในกล่องโต้ตอบคุณสมบัติการเชื่อมต่อ (หรือถ้าคุณต้องการบรรทัดคำสั่งให้สร้างการเชื่อมต่อด้วยตนเอง/etc/NetworkManager/system-connections)


0

จากหน้าช่วยเหลือของอูบุนตูและความพยายามของฉันกับ Debian 9 ฉันใช้งานได้และมีสิทธิ์การใช้ไฟล์ที่ถูกต้องกับfstabรายการนี้:

sshfs#user@host:/remote/path /local/path fuse delay_connect,defaults,idmap=user,IdentityFile=/local/path/to/privatekey.pem,port=22,uid=1001,gid=1002,allow_other 0 0

delay_connectตรวจสอบให้แน่ใจfstabว่าไม่ได้ติดตั้งโฟลเดอร์ระยะไกลก่อนที่อินเทอร์เฟซเครือข่ายจะหมด

คุณสามารถเปลี่ยนport, uid, gidเพื่อให้ตรงกับความต้องการของท้องถิ่นของคุณ เมื่อต้องการคิดออกของฉันuid/ gidฉันก็ใช้$ idเมื่อเข้าสู่ระบบด้วยผู้ใช้ที่เหมาะสม

allow_otherมีการอนุญาตให้ผู้ใช้ / กลุ่มอื่นเข้าถึงไดเรกทอรีที่เมาท์ แม้ว่าจะมี/local/pathสิทธิ์ที่ถูกต้อง(เช่น777) สิ่งนี้จำเป็นหากคุณต้องการผู้ใช้ที่แตกต่างกัน (แตกต่างจากการเมานท์ sshfs) เพื่อเข้าถึงไดเรกทอรีที่เมาท์

ตัวเลือกอื่น ๆ สามารถพบได้ในmanpage sshfs

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.