如何像sshfs一样将本地目录挂载到远程?

kon*_*aju 30 linux ssh mount remote

我知道 sshfs 用于将远程目录挂载到本地,但我需要将本地目录挂载到远程 fs。

我想挂载一个本地文件夹,例如:

/home/username/project_directory
Run Code Online (Sandbox Code Playgroud)

到我可以通过 ssh 访问的远程机器上,例如:

/var/www/project_directory
Run Code Online (Sandbox Code Playgroud)

目标是在本地进行的编辑反映在远程文件系统上。

qui*_*inn 23

来自:http : //mysteriousswede.blogspot.com/2012/01/mount-local-directory-to-server-on.html

怎么做?您通过使用登录到本地计算机上的端口 22 的机器上的端口 10000 来设置 ssh 转发,并使用 sshfs 在另一端安装。

例如 将本地机器上的 /home/username/mywwwdevelstuff 挂载到服务器端的 /var/www :

localusername@localmachine: ssh username@server -R 10000:localmachine:22
username@server: cd /var
username@server: sshfs -p 10000 -o idmap=user,nonempty \
                 localusername@127.0.0.1:~/mywwwdevelstuff www
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是,本地机器必须运行 ssh 服务器。 (8认同)
  • 还值得一提的是,这实际上并不是反向安装,因为它要求远程用户能够登录到本地计算机。这不是您想要的反向安装。通过正确的反向安装,您将拥有可以访问远程计算机的本地用户,但远程用户不需要访问本地计算机。 (4认同)

小智 11

为了避免额外的身份验证和双重加密,您可以将端口反向转发到 22 之外的另一个端口,并首先在该端口上通过 ncat 的 -e 选项运行 /usr/libexec/openssh/sftp-server。然后在远程端通过 ssh 命令使用 sshfs 的“directport”选项。

ncat -l -p 34567 -e /usr/libexec/openssh/sftp-server &
ssh -t -R 34568:localhost:34567 $REMOTE "sshfs localhost: $MPOINT -o directport=34568; bash"
Run Code Online (Sandbox Code Playgroud)

您将获得一个远程 shell,其中包含 $MPOINT 目录中的本地文件,并且无需登录两次。那是多么方便啊。作为奖励,它只允许安装一次,因此如果远程计算机上的其他人尝试打开端口 34568,她将无法访问您的文件。确保端口号 34567 未在本地使用,并且 34568 未在远程使用,否则请选择其他一些 >1024 的数字。并确保远程端存在 $MPOINT 目录。