如何在无法访问的客户端计算机上挂载无法公开访问的服务器的远程 sshfs 目录?

Seb*_*ian 2 ssh mount ssh-tunneling sshfs tunneling

这是@Andrei对问题的扩展

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

我在同样的情况,我想挂载远程目录,但不同的是,两台机器A,并B没有在互联网上公开曝光。A是我当地的工作站。

所以我既不能 ssh from A -> B,也不能B -> A.

我经常做的是从租用的虚拟服务器(VPS)B -> C那里建立反向连接C。脚本这样的连接(在连接丢失的情况下重新连接)通过启动@reboot的关键cron

user@pcB $ ssh -R 2048:localhost:22 -p<port> user@serverC
Run Code Online (Sandbox Code Playgroud)

然后,从A -> B我走中间路线A -> C -> B

user@pcA $ ssh serverC
user@serverC $ ssh -p 2048 user@localhost
user@pcB $ # okay, logged in.
Run Code Online (Sandbox Code Playgroud)

我在寻找一种方式来安装的目录pcB:/home/userpcA

如何使用 ssh 通过另一台电脑连接到一台电脑是类似的,但提供的解决方案在这种情况下不起作用:我的情况下的连接映射A -> C <- B不是A -> C -> B.

Seb*_*ian 6

这比我想象的要容易!

所有的人有做的是绑定端口2048serverC上一个端口pcA。为简单起见,我使用相同的端口号2048

user@pcA $ ssh -L 2048:localhost:2048 user@serverC
Run Code Online (Sandbox Code Playgroud)

需要保持这个终端窗口打开。

然后,在pcB:/home/user本地挂载目录pcA如下所示:

sshfs -o port=2048 user@localhost:/home/user/ /mnt/pcB
Run Code Online (Sandbox Code Playgroud)

不错的副作用:这意味着您还可以使用高效的 X 服务器连接,例如freeNXvnc检索pcB. 只需连接到机器localhost:2048并使用正确的凭据(用户名/密码)即可pcB

如果您不想为了连接而保持终端打开,您可以使用:

ssh -NfL 2048:localhost:2048 user@serverC
Run Code Online (Sandbox Code Playgroud)

请注意,这样做可能会违反您雇主/组织的安全政策,因此请确保获得适当的权限。