如何通过中间机挂载远程SSHFS?隧道?

And*_*rei 35 ssh mount remote tunnel sshfs

我想使用 SSHFS 挂载远程文件系统 (A),但有时我有 IP 地址,不允许访问。所以我的计划是通过该网络中的另一台机器 (B) 访问它。我是否需要在 B 上安装 A,然后在本地计算机上安装 B(和 A)?有没有更好的方法来做到这一点?

更新

只是为了澄清程序:

首先,我做一个隧道

ssh -f user@machineB -L MYPORT:machineA:22 -N
Run Code Online (Sandbox Code Playgroud)

然后我挂载远程文件系统

sshfs -p MYPORT user@127.0.0.1:/myremotepath /mylocalpath
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?

完成后如何摧毁隧道?

小智 22

您可以使用选项ssh_commandsshfs这样的伎俩:

sshfs ma: /mnt -o ssh_command='ssh -t mb ssh'
Run Code Online (Sandbox Code Playgroud)

用通常的方式卸载

fusermount -u /mnt
Run Code Online (Sandbox Code Playgroud)

对不起,这晚了7年......

  • 使用 Openssh 1.1 中的新 -J 选项,它是: sshfs ma: /mnt -o ssh_command='ssh -J mb' (7认同)

小智 11

是的隧道。您连接机器 B,创建本地隧道 (-L) 到机器 A 的 SSHd 端口,然后sshfslocalhost到新创建的隧道端口。


dcn*_*uro 7

这在 HighSierra 10.13.6、SHFS 版本 2.5 (OSXFUSE SSHFS 2.5.0) OSXFUSE 3.10.4 上对我有用。FUSE 库版本:2.9.7

基于 Rodrigo Farias 上面的回答 + clemisch 和 Ohad Rubin 注释 -J 选项:

sshfs -p port finalserver_username@finalserver:/path/to/folder/on/finalserver/ /local/mount/point -o ssh_command='ssh -J intermediate_server_username@intermediate_server:port'
Run Code Online (Sandbox Code Playgroud)

  • 我不确定你是什么意思。-t 选项适用于以前的设置,但不适用于此设置。这就是我所说的“在...上为我工作”的意思。答案是 Rodrigo 的原始答案与 Ohad 和 Clemisch 的评论的结合,因此归属。 (2认同)