Nautilus可以设置SSHFS来代替SFTP吗?

我已经设置好Nautilus以使用SFTP来挂载远程文件系统。
到目前为止,这个方法运行得很好,但是SFTP似乎存在一些问题,我觉得不太方便:
1. 当我覆盖一个已存在的文本文件时,远程机器上的群组读取权限会神秘地被移除。 2. 当我试图通过将文件拖到Thunderbird中来附加文件时,我得到了一个无法使用的sftp:// URL(如果我打开TB附件对话框并浏览.gvfs,一切都正常)。
当我手动通过SSHFS挂载相同的文件系统时,以上问题都不存在。有没有可能配置Nautilus以使用SSHFS?或许有个插件?它在“连接到服务器”可用选项列表中并未出现。
补充:有人指出sshfs使用sftp协议作为后端。尽管如此,真正的问题在于通过Nautilus访问文件不如通过sshfs挂载顺畅,我想找出如何让Nautilus以更好的方式进行操作。
2个回答

为了将主机的远程文件夹挂载到客户端上,以便您可以像处理本地文件一样处理远程文件,请使用`sshfs`而不是`sftp`。在执行以下操作之前,您需要在主机上安装OpenSSH Server
在客户端上运行[1]
test -e ~/mountpoint || mkdir --mode 700 ~/mountpoint
sshfs fred@server.example.org:. ~/mountpoint -p <port-number>

开始使用Nautilus

现在在Nautilus中打开本地文件夹~/mountpoint。恭喜,您可以像对待客户端本地文件一样处理远程文件!

卸载主机的远程文件夹在本地客户端上

fusermount -u ~/mountpoint

*SFTP的细节:SFTP用于在客户端和主机之间进行文件传输,而SSHFS是一个文件系统客户端,使远程文件表现得像本地文件一样。就好像你暂时将主机的远程文件夹与一个虚拟的本地文件夹同步。

当您与这些SSHFS文件进行交互时,您的本地客户端将从主机到客户端进行SSH复制,以便它们在您的客户端上表现得就像它们是本地文件一样。但是,您所做的任何更改都会对远程主机产生影响,并且即使在卸载后仍然保留。


破坏问题并不能使这个回答更加相关。如果我想知道如何在命令行中使用SSHFS,我会直接询问的。此外,问题明确表明我已经知道如何做到这一点。 - ams
@ams:对于我的错误,我表示歉意。请澄清您的问题和问题标题。"Nautilus如何设置使用SFTP挂载远程文件系统"是什么意思?为什么我的启动脚本和前两个命令不等价?您是在寻找一个最佳答案,是结束还是通过插件、通过"连接到服务器"方式来实现?再次对我误解之处致以道歉。 - jtd
13年前,我想要让图形用户界面(GUI)正常工作。我很擅长编写一堆神奇的脚本,但我不明白为什么我必须这样做。即使到今天,它还是不能正常工作。 - ams

Wikibook OpenSSH开始
引用: 另一种传输文件的方法是使用sshfs,甚至可以远程使用它。它是基于SFTP的文件系统客户端,并利用了sftp子系统。它可以将远程服务器上的目录作为本地文件系统上的目录访问,任何程序都可以像访问本地目录一样访问它。用户必须具有挂载点的读写权限才能使用sshfs。
所以最终通信方式是相同的。SSHFS使用SFTP。不同之处在于sshfs是一个文件系统驱动程序,允许挂载通过SFTP访问的驱动器。然而,Nautilus不会挂载驱动器,只会显示它们。您可以将文件系统添加到/etc/fstab中,以便在启动时挂载它,但我不建议这样做,因为ssh连接可能不可用。更简单的方法是设置一个可以作为启动应用程序运行的bash脚本。
第2点描述的行为是合乎逻辑的:因为您仅通过SFTP连接,所以您拖入Thunderbird的文件在您的文件系统中不存在,而是作为远程路径存在。

因为评论的原因而进行编辑:

也许我解释得不够好。这里有一个例子:如果你的远程资源在服务器fooserver上,根目录是foodir,文件位于foosubdir/foofile中,那么资源路径就是sftp://fooserver/foodir/foosubdir/foofile。当你使用Nautilus SFTP时,这仍然是你访问该文件的唯一路径,它是远程的。如果你使用sshfs代替,foodir的内容将在你的文件系统内可用 - sshfs是一个文件系统驱动程序。那么就好像文件存储在你的硬盘上一样。资源sftp://fooserver/foodir的内容在逻辑上映射到你的挂载目录~/.gvfs中。然后,Thunderbird可以从你的本地文件系统环境中访问该文件,路径为~/.gvfs/foosubdir/foofile。Thunderbird甚至没有意识到它是一个远程文件,集成到klinux内核中的sshfs文件系统驱动程序会为你抽象出来。


不,第二点是不合逻辑的。文件系统被挂载在.gvfs下面,我可以通过那个访问文件。 - ams
我编辑了我的帖子以更好地解释它。但也许我没有正确理解你在#2的问题。 - Michael K
确切地说,我希望Nautilus提供本地路径,而不是本地程序无法使用的远程路径。当你双击文件时,它并没有做到这一点,那为什么在拖动文件时却这样呢? - ams
我刚刚试过了。在SFTP资源上创建了一个文本文件,然后双击打开它。Gedit打开了并显示了它的sftp://路径。右键点击并查看属性可以看到它是一个远程资源。所以我现在明白你的真正意图,但我看不到简单的解决方案。在你的情况下,GVFS似乎只提供了远程URL,这是一个有效的资源,但当然不适用于发送电子邮件。 - Michael K
2它实际上安装在/run/user/[您的uid]/gvfs/[something]/下。Nautilus只显示sftp://,因为Ubuntu。垃圾桶也是一样-垃圾桶实际上是~/.local/share/Trash/files - Hitechcomputergeek