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

ams*_*ams 6 nautilus sshfs sftp

我已将 Nautilus 设置为使用 SFTP 挂载远程文件系统。

到目前为止,效果很好,但 SFTP 似乎存在一些我认为无用的问题:

  1. 当我覆盖现有文本文件时,远程计算机上的组读取权限会被神秘地删除。
  2. 当我尝试通过将文件拖到雷鸟来将文件附加到电子邮件时,我得到了 TB 无法使用的 sftp:// url(但是,如果我打开 TB 附加对话框并浏览.gvfs,一切都很好)。

当我通过 SSHFS 手动挂载相同的文件系统时,这一切都不会发生。是否可以将 Nautilus 配置为使用 SSHFS?也许是一个插件?它不会出现在可用选项的“连接到服务器”列表中。

编辑:有人指出 sshfs 使用 sftp 协议作为后端。虽然这可能是真的,但真正的问题是通过 Nautilus 访问文件不如通过 sshfs 挂载顺利,我想弄清楚如何让 Nautilus 以更好的方式做到这一点。

jtd*_*jtd 2

挂载主机的远程文件夹,以便您可以将远程文件视为客户端上的本地文件,请使用sshfs而不是sftp.* 在主机上需要一个OpenSSH 服务器,然后才能进行以下操作。

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

从客户端运行[1]

test -e ~/mountpoint || mkdir --mode 700 ~/mountpoint
sshfs fred@server.example.org:. ~/mountpoint -p <port-number>
Run Code Online (Sandbox Code Playgroud)

开始使用鹦鹉螺

现在打开 Nautilus 中的本地文件夹~/mountpoint。恭喜,您可以将远程文件视为客户端上的本地文件!

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

fusermount -u ~/mountpoint
Run Code Online (Sandbox Code Playgroud)

*详细信息: SFTP 用于客户端和主机之间的文件传输,而 SSHFS 是文件系统客户端,使远程文件表现为本地文件。就好像您暂时将主机的远程文件夹与虚拟本地文件夹同步一样。

当您与这些 SSHFS 文件交互时,您的本地客户端将从主机到客户端通过 SSH 发送一份副本,因此事情的行为就像它们在您的客户端本地一样。但是,您所做的任何更改都会在远程主机上生效,并且即使在卸载后仍然保留。


Mic*_*l K 1

来自维基百科 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 文件系统驱动程序确实为您抽象了这一点。

  • 它实际上安装在`/run/user/[your uid]/gvfs/[something]/`下。Nautilus 只显示 `sftp://` 因为 Ubuntu。垃圾箱也是如此 - 垃圾箱实际上是“~/.local/share/Trash/files”。 (2认同)