按需掛載的 sshfs
我遵循了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 條目(已使用user
orusers
mount 選項標記為允許這樣做),則該命令是您需要使用的。
這些說明令人困惑,特別是對於不了解 systemd 的人。
正確的程序:
- 添加到
/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 systemctl daemon-reload
。這將創建一個 systemd “單元文件”。- 通過執行找出哪個單元文件
systemctl list-unit-files --type automount
。對我來說是mnt-remotes-hostname.automount
。- 啟用它:
sudo systemctl restart mnt-remotes-hostname.automount
。cd /mnt/remotes/hostname
或者ls /mnt/remotes/hostname
它會自動創建 sftp 連接!這行得通,但我還不確定:
- 有人說
allow_other
是安全風險,我需要調查一下- 我不知道如何指定何時應該自動解除安裝掛載(空閒時間多少秒等)
如果有人可以闡明這一點,請這樣做。
更新 根據@sourcejedis的回答,必須按以下順序停止安裝:
systemctl stop whatever.mount && systemctl stop whatever.automount
並且不應該使用umount mounpoint
!