我有一个可以通过 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
需要身份验证(显然),您需要一种方法来对其进行身份验证。您可以使用两种不同的替代方案:
- 使用sudoers
sftp-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 操作系统。如果发行版的存储库中不存在sshfs
或libfuse
组件,则可能需要从源代码编译它们。
由于您没有提到您正在使用哪个发行版,我无法提供更具体的安装说明。
使用示例:
$ sshfs [email protected]: ~/destpath
将 的主文件夹映射user
到server.com
本地~/destpath
机器上。