我习惯sshfs
在本地挂载远程目录。我在 VirtualBox 虚拟机中使用 Xubuntu 16.04。昨天,当所有东西都挂载后,我保存了虚拟机的状态并关闭了它;今天早上我重新加载了保存的状态。我相信我使用虚拟机这一事实与解决问题并没有太大关系(因为之前发生过一次,我设法修复了它,我只是不记得是怎么修复的),但我添加它是为了解释损坏是如何发生的。
现在,正在使用的本地目录上什么都挂载不了,命令永远不会返回。我可以将远程服务器中的任何目录挂载到本地计算机的其他目录中,但昨天使用的目录中什么都挂载不了。我重新启动了 Xubuntu 计算机,并将其完全关闭,但无济于事。我还重新启动了远程服务器。我也可以通过 SSH 进入远程服务器。
我已确保有问题的目录中没有安装任何内容(fusermount -u problematic_directory
和sudo 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
,我已经删除并重新创建了(空)目录,但什么都没有改变。
我也删除sshfs
并openssh-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
这个问题已经解决。