如何在 Linux 中挂载 SSH 文件夹,以便我可以像普通文件夹一样访问它并进行读/写?

如何在 Linux 中挂载 SSH 文件夹,以便我可以像普通文件夹一样访问它并进行读/写?

我有一个可以通过 SSH 访问的远程服务器。我想将该服务器上的一个文件夹安装到我的本地 Linux 桌面上。然后我希望能够从我的文本编辑器中读取/写入那里的文件。我该怎么做?

一个重要要求:

  • 远程服务器不允许root登录
  • 远程服务器上的文件夹仅限根用户使用

通常当我使用 ssh 时,我会以基本用户身份登录,然后执行“su”来执行 root 操作。如何使用 sshfs 执行此操作?

服务器:CentOS 6.5
桌面:openSUSE 13.1

答案1

正如 @allquixotic 在他的回答中所述,您可以使用 SSHFS 在本地文件夹中挂载远程路径。要实现您的要求,您需要一个类似于这个

由于 SSHFS 使用SSH 文件传输协议作为基础,这意味着当你以用户身份登录时,服务器就会生成。但这也意味着你不能直接地执行su,因为没有生成 shell。

避免这种情况的一种方法是使用 root 身份运行服务器,你可以-o sftp_server按照文档。 像这样:

sshfs username@host:remote_path local_mount_path -o sftp_server="/usr/bin/sudo /usr/libexec/openssh/sftp-server"

但是,由于sudo需要身份验证(显然),您需要一种方法来对其进行身份验证。您可以使用两种不同的替代方案:

  • 使用sudoerssftp-server文件以添加用户无需密码即可执行的可能性。查看如何操作这里(如果用于 Ubuntu 则无所谓)。
  • 使用 SSH运行sudo,然后执行sshfs命令。这将允许 sudo 无需密码即可执行,因为您刚才已经执行过它。这将更新 5 分钟的超时时间:

    ssh username@host sudo -v
    

您也可以尝试将密码直接传输到sudo,但我不建议这样做,因为这是不安全并且可能不起作用因为服务器不是由 shell 生成的。

答案2

有多种方法可以做到这一点。其他建议替代方案的答案不是错误的;他们只是不同的。我将解释一种特殊的可能性:sshfs

您可以使用SSH文件系统,这是一个用户空间中的文件系统通过 SSH 将目录映射到本地路径。这应该适用于几乎所有具有 2.6 系列或 3.x 系列 Linux 内核的现代 GNU/Linux 操作系统。如果发行版的存储库中不存在sshfslibfuse组件,则可能需要从源代码编译它们。

由于您没有提到您正在使用哪个发行版,我无法提供更具体的安装说明。

使用示例:

$ sshfs [email protected]: ~/destpath

将 的主文件夹映射userserver.com本地~/destpath机器上。

相关内容