我家里有一台服务器,可通过本地 WIFI 访问。我也有几台笔记本电脑。由于其易于使用,我使用 sshfs 在服务器中共享文件夹。但有时我会注意到共享文件夹存在很多连接问题。
NFS 是更好的解决方案吗?
我大学的 CS 部门有自己的服务器用于开发(从现在开始,dev.univ.edu)。我可以通过 SSH 和 SFTP 访问此服务器,并且希望使用 WSL 在我的 Windows 笔记本电脑上做一些繁重的工作。我的计划是sshfs通过 SFTP 在我的笔记本电脑上安装服务器的文件系统,这样我就可以使用我自己的工具,而不必使用我们服务器上的有限程序。但是,每当我尝试使用时,都会sshfs发生以下情况:
user@host:~$ sshfs -p 22 user@dev.univ.edu: ~/dev/ -o follow_symlinks
> fuse: device not found, try 'modprobe fuse' first
Run Code Online (Sandbox Code Playgroud)
运行modprobe fuse给了我以下结果:
modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.4.0-43-Microsoft/modules.dep.bin'
modprobe: FATAL: Module fuse not found in directory /lib/modules/4.4.0-43-Microsoft
Run Code Online (Sandbox Code Playgroud)
一些挖后,似乎fuse不支持WSL,偶数后UserVoice的页面进行fuse支持已经运行了2年有超过1500人要求它。由于sshfs依赖fuse(我假设创建远程文件所在的文件系统),因此sshfs无法使用。
我发现了一个billziss-gh/winfsp看起来很有前途的项目 ( ),但我不知道如何将它与sshfs. …
我家里有 2 台装有 Ubuntu 的 PC,它们之间有网络连接。
如果我做
$ sshfs pc2root@192.168.0.2:/ /media/pc2
Run Code Online (Sandbox Code Playgroud)
我可以将远程设备用作本地设备吗?(在这种情况下:/media/pc2/dev/sr0作为本地 DVD-RW)。最后,Unix 中的一切都是文件,对吗?
我做了
culebrón@culebrón:/dev$ sudo ln -s /media/pc2/dev/sr0 dvdrw
Run Code Online (Sandbox Code Playgroud)
但没有成功:Brasero 和 K3b 看不到任何 DVD 设备。
我知道,对于大多数任务,SSH 和 sshfs 绰绰有余,但想知道是否有通用解决方案。
通常,当我通过 ssh 挂载文件系统时:
sshfs user@remote: ~/Mounts/Remote
Run Code Online (Sandbox Code Playgroud)
如果我唤醒机器,机器将休眠(关闭笔记本电脑盖),我无法访问安装的文件夹。此外,如果我尝试ls在父文件夹中,终端会冻结。当连接以某种方式丢失时也会发生同样的情况。
如果尝试卸载使用
fusermount -u ~/Mounts/Remote
Run Code Online (Sandbox Code Playgroud)
我不能这样做,因为:
fusermount: 无法卸载 /home/yotama9/Mounts/Remote: 设备或资源繁忙
我试图杀死 ssh,但我无法再次挂载该文件夹。ls在文件夹中仍然冻结。
我怎样才能避免这种情况并解决这个问题(Arch Linux)?
如果我在根目录 sshfs 整个文件系统,这是否意味着它会下载整个根目录?SSHFS 就是这样工作的,它会物理下载整个内容吗?或者它是否在我将文件放入其中时获取文件?我想获取整个根分区,但我担心这会花费一些时间和大量空间。
直到今天早上,我一直很好地使用 sshfs 从我办公室的 linux 机器上挂载目录。今天,它停止了。这是我的 sshfs 命令:
sshfs -osshfs_sync,volname=linux-builder3 linux-builder3:/home/cnorum /Users/carl/linux-builder3
Run Code Online (Sandbox Code Playgroud)
我收到此错误,但 sshfs 进程似乎仍在运行(也就是说,它只是坐在那里,永远不会返回到 shell 提示符):
mount_osxfusefs: failed to mount /Users/carl/linux-builder3@/dev/osxfuse1: Socket is not connected
Run Code Online (Sandbox Code Playgroud)
Mac 上的系统日志包含以下消息:
2/20/13 12:57:27.476 PM KernelEventAgent[43]: tid 00000000 received event(s) VQ_DEAD (32)
2/20/13 12:57:27.000 PM kernel[0]: OSXFUSE: force ejecting (no response from user space 5)
2/20/13 12:57:27.000 PM kernel[0]: OSXFUSE: user-space initialization failed (57)
Run Code Online (Sandbox Code Playgroud)
这是/var/log/auth.log在 linux 机器上:
Feb 20 12:56:28 linux-builder3 adclient[1599]: INFO <fd:22 PAMIsUserAllowedAccess> audit User 'cnorum' is authorized
Feb 20 12:56:28 …Run Code Online (Sandbox Code Playgroud) 第三方程序会将文件写入 SSHFS 挂载目录。如果互联网连接丢失,第三方程序可能会崩溃(严重),因为所有试图在这种状态下(当没有互联网连接时)访问此类 SSHFS 挂载目录的程序都被置于某些人所描述的“不间断”状态睡觉”。SSHFS 有一个自动重新连接的选项,但这无济于事,因为如果连接丢失,第三方程序仍然会挂起(并崩溃)(即使连接恢复后,SSHFS 将重新挂载目录)。Autofs 无济于事,基本上它是关于 SSHFS 在连接丢失时的行为。为什么它不能像网络共享目录(Samba 或其他方式)一样简单地返回一个错误而不是......永远不会?
如果 SSHFS 无法按描述工作,是否有 SSHFS 的替代方案?
其他信息:
操作系统:我使用的是 Ubuntu Linux (12.04 LTS)
我正在尝试为 Web 开发设置一台 Ubuntu 机器,并认为我会开始使用 SSHFS 而不是烦人的 FTP 协议。我通过 apt-get 安装了 SSHFS。我在我的文档文件夹中创建了一个文件夹,名为MyProject. 我是那个文件夹的所有者。
我使用远程文件夹安装到我的本地文件夹
sshfs root@myproject.com:ftp.myproject.com/myproject.com/public_html /home/anton/Documents/MyProject
Run Code Online (Sandbox Code Playgroud)
后面跟着我的密码。然后远程文件夹确实挂载了。但是,我在本地计算机上所做的更改并未反映在服务器上。我在这里缺少什么?
Ubuntu 12.10
我正在寻找通过互联网从我的家庭服务器 (linux) 挂载文件夹的解决方案。数据应该被加密,这样没有人可以读取我的文件内容或任何元数据。
我找到了多种解决方案:
有人可以解释一下区别吗?哪种方式更好(更安全)?文件处理是否存在差异(例如,与服务器的连接丢失时)?
在 Ubuntu 上使用 sshfs 和 autofs,我无法在远程文件上设置时间戳:
$ touch /sshfs/server/some/file
touch: setting times of `/sshfs/sshfs/server/some/file': Permission denied
Run Code Online (Sandbox Code Playgroud)
我确实对文件有写访问权限。问题浮出水面是因为复制到远程的文件没有获得原始的时间戳,而是复制完成的时间。
如果我通过 ssh 连接到服务器,我也可以毫无困难地更改时间戳。它只能通过 sshfs 失败。
$ cat /etc/auto.sshfs
afserver -fstype=fuse,sshfs_debug,rw,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#my_username@server.domain.lan:/
$ stat /sshfs/server/some/file
...
Access: (0664/-rw-rw-r--) Uid: ( 1003/ UNKNOWN) Gid: ( 100/ users)
Run Code Online (Sandbox Code Playgroud) sshfs ×10
ssh ×5
linux ×4
filesystems ×2
fuse ×2
mount ×2
nfs ×2
ubuntu ×2
arch-linux ×1
internet ×1
macos ×1
networking ×1
scp ×1
sftp ×1
sockets ×1
ubuntu-12.10 ×1
unix ×1