无法使用 sshfs 挂载特定本地目录中的任何内容

无法使用 sshfs 挂载特定本地目录中的任何内容

我习惯sshfs在本地挂载远程目录。我在 VirtualBox 虚拟机中使用 Xubuntu 16.04。昨天,当所有东西都挂载后,我保存了虚拟机的状态并关闭了它;今天早上我重新加载了保存的状态。我相信我使用虚拟机这一事实与解决问题并没有太大关系(因为之前发生过一次,我设法修复了它,我只是不记得是怎么修复的),但我添加它是为了解释损坏是如何发生的。

现在,正在使用的本地目录上什么都挂载不了,命令永远不会返回。我可以将远程服务器中的任何目录挂载到本地计算机的其他目录中,但昨天使用的目录中什么都挂载不了。我重新启动了 Xubuntu 计算机,并将其完全关闭,但无济于事。我还重新启动了远程服务器。我也可以通过 SSH 进入远程服务器。

我已确保有问题的目录中没有安装任何内容(fusermount -u problematic_directorysudo umount -l problematic_directory)。

下表总结了情况(original_dir是我通常挂载的目录;arbitrary_dir是任何其他目录):

LOCAL             REMOTE            WORKS
original_dir  <-- original_dir      NO
arbitrary_dir <-- original_dir      YES
original_dir  <-- arbitrary_dir     NO
arbitrary_dir <-- arbitrary_dir     YES

这表明我的本地机器配置有错误,因为远程机器似乎并不关心我挂载了哪个目录。

没有关于original_dir的信息/proc/mounts,我已经删除并重新创建了(空)目录,但什么都没有改变。

我也删除sshfsopenssh-client重新安装了它,但还是没有成功。

在调试模式下运行该命令的输出:

$ sshfs -o debug,sshfs_debug,loglevel=debug,idmap=user me@remoteip:/home/me/project-share /home/me/project-share/
SSHFS version 2.5
FUSE library version: 2.9.4
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
executing <ssh> <-x> <-a> <-oClearAllForwardings=yes> <-ologlevel=debug> <-2> <me@remoteip> <-s> <sftp>

它会永远这样悬挂下去。

成功挂载的输出如下所示:

$ sshfs -o debug,sshfs_debug,loglevel=debug,idmap=user me@remoteip:/home/me/project-share /home/me/another-dir/
SSHFS version 2.5
FUSE library version: 2.9.4
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
executing <ssh> <-x> <-a> <-oClearAllForwardings=yes> <-ologlevel=debug> <-2> <me@remoteip> <-s> <sftp>
debug1: Reading configuration data /home/me/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to remoteip [remoteip] port 22.
debug1: Connection established.
debug1: identity file /home/me/.ssh/id_rsa type 1
...
debug1: Offering RSA public key: /home/me/.ssh/id_rsa
debug1: Server accepts key: pkalg rsa-sha2-512 blen 279
debug1: Authentication succeeded (publickey).
Authenticated to remoteip ([remoteip]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug1: Sending subsystem: sftp
Server version: 3
Extension: [email protected] <1>
...

不幸的是,我无法在本地使用其他安装点,因为我需要本地和远程目录具有相同的路径,并且无法更改远程目录的路径。

编辑:我找到了一种解决方法:将远程目录挂载到另一个目录中,然后创建original_dir符号链接:

$ mkdir ~/original_dir_mnt_point
$ sshfs -o idmap=user me@REMOTE_IP:~/original_dir ~/original_dir_mnt_point/
$ ln -s ~/original_dir_mnt_point/ ~/original-dir

但是,这只有在我们调用时符号链接尚未创建时才会起作用sshfs,因此每次重新安装时都需要重新创建符号链接。不过,我仍然希望正确修复此问题。

答案1

共享文件或文件夹需要额外的驱动程序“插入 Guest Additions CD 映像选项”是一种克服虚拟机阻止文件传输的方法。

答案2

我遇到了同样的问题。这个问题困扰了我一天,但现在解决了。它挂了

$ sshfs -p 22 [email protected]:/home/admin/fileShare/dart/2.5.0/dart-sdk 
$HOME/dockerSahreFile/dart-sdk -o allow_other -o debug -o sshfs_debug
 SSHFS version 2.10
 FUSE library version: 2.9.7
 nullpath_ok: 0
 nopath: 0
 utime_omit_ok: 0
 executing <ssh> <-x> <-a> <-oClearAllForwardings=yes> <-oPort=22> <-2> <[email protected]> <-s> <sftp>

和其他输出工作,如

 $ sshfs -p 22 [email protected]:/home/admin/fileShare/dart/2.5.0/dart-sdk $HOME/otherDockerSahreFile/dart-sdk -o allow_other -o debug -o sshfs_debug

有时我会执行多次,例如:

diskutil umount force $HOME/dockerSahreFile/dart-sdk
 or 
 diskutil unmount force $HOME/dockerSahreFile/dart-sdk

这个问题已经解决。

相关内容