Ubuntu

按需掛載的 sshfs

  • October 10, 2019

我遵循了sshfs “on demand” 安裝的說明,但它不起作用。

我將此添加到/etc/fstab

username@hostname:/ /mnt/remotes/hostname fuse.sshfs noauto,x-systemd.automount,_netdev,users,idmap=user,IdentityFile=/home/stanley/.ssh/my_rsa_key,allow_other,reconnect 0 0

然後我跑了sudo mount -a,什麼也沒做。我也試過了systemctl daemon-reload && systemctl restart proc-sys-fs-binfmt_misc.automount

所以我遵循了故障排除提示,並改用了這個:

username@hostname:/ /mnt/remotes/hostname fuse.sshfs ssh_command=ssh\040-vv,sshfs_debug,debug,_netdev,users,idmap=user,IdentityFile=/home/stanley/.ssh/my_rsa_key,allow_other,reconnect 0 0

然後跑了sudo mount -av。在一個單獨的終端中,我可以訪問該掛載點。

所以 1) ssh 和 sftp 正在工作,2) sshfs 正在工作,3) 權限很好。

所以只有按需部分不起作用 - 我做錯了什麼?

說明說:

注意:編輯 /etc/fstab 後,(重新)啟動所需的服務:systemctl daemon-reload && systemctl restart<target>可以通過執行 systemctl list-unit-files –type automount 找到

你有問題 :-(。

由 systemd 實現的掛載選項,例如x-systemd.*,不是由mount命令實現的。

但是mount,如果您是非特權使用者(沒有 root/sudo),並且想要掛載 fstab 條目(已使用useror usersmount 選項標記為允許這樣做),則該命令是您需要使用的。

這些說明令人困惑,特別是對於不了解 systemd 的人。

正確的程序:

  1. 添加到/etc/fstabusername@hostname:/ /mnt/remotes/hostname fuse.sshfs noauto,x-systemd.automount,_netdev,users,idmap=user,IdentityFile=/home/stanley/.ssh/my_rsa_key,allow_other,reconnect 0 0
  2. 執行sudo systemctl daemon-reload。這將創建一個 systemd “單元文件”。
  3. 通過執行找出哪個單元文件systemctl list-unit-files --type automount。對我來說是mnt-remotes-hostname.automount
  4. 啟用它:sudo systemctl restart mnt-remotes-hostname.automount
  5. cd /mnt/remotes/hostname或者ls /mnt/remotes/hostname它會自動創建 sftp 連接!

這行得通,但我還不確定:

  • 有人說allow_other是安全風險,我需要調查一下
  • 我不知道如何指定何時應該自動解除安裝掛載(空閒時間多少秒等)

如果有人可以闡明這一點,請這樣做。


更新 根據@sourcejedis的回答,必須按以下順序停止安裝:systemctl stop whatever.mount && systemctl stop whatever.automount並且不應該使用umount mounpoint

引用自:https://unix.stackexchange.com/questions/467081