使用代理通过阻塞端口挂载 sftp

使用代理通过阻塞端口挂载 sftp

我提前道歉,因为我百分之九十确定这个问题以前在某个地方被问过,但我无法弄清楚,无法决定什么更好,而且我对这一切完全不熟悉。

我的问题:在我学校的网络上,他们封锁了除 21、22 和 443 之外的几乎所有端口,但我想通过我的本地计算机 (Mac) 访问我网站的 FTP 服务器连接 (由某家公司托管) 的端口 7685 (我无法更改)。当然最好使用 SFTP。

现在我的问题是:将 sftp 安装到学校网络上的本地机器的最安全、最快捷的方法是什么?

在家里,我可以设置我的 Raspberry Pi 作为中间人,引导来自任何端口的所有流量,所以我的想法是将其用作学校网络之间的代理。因此,我将设置它以在端口 443 上接收来自本地计算机/学校网络的流量,并将其引导到端口 7685 上的 FTP 服务器。

我可以想象两种可能性:1) 通过端口 7685 将 FTP 安装到我的 RPi,然后使用端口 443 将我的 RPi 安装到学校网络上的机器,但我担心这会减慢连接速度(因为有额外的跳数)。或者 2) 使用我的 RPi 作为代理(使用称为 SOCKS 的东西?)将我的 sftp 直接安装到学校网络上的机器,但我不知道这是如何工作的。

或者还有其他我没看到的方法?

我可以更改的事情:我可以用家里的 RPi 和所有网络首选项/防火墙设置做任何事情。我本地计算机的设置。

我无法改变的事情:FTP 服务器端口/设置和我学校的网络偏好设置。(呃)

提前致谢!(如果某处已经有答案,请将其发送给我,然后我会删除此帖子)

答案1

描述的解决方案这里工作了。

要设置代理使用

ssh -L LOCAL_PORT:TARGET_HOST:TARGET_PORT INTERMEDIATE_USERNAME@INTERMEDIATE_HOST -p INTERMEDIATE_PORT -N

其中:
LOCAL_PORT是从本地机器转发到的端口
TARGET_HOST你要访问的主机(在我的情况下是我的网站 FTP 服务)
TARGET_PORT你要访问的主机的端口(在我的情况下是 7685)
INTERMEDIATE_USERNAME我用来登录我的 RPi/中间人的用户名
INTERMEDIATE_HOST我家里的 RPi 的地址(或你用作中间人的任何地址)
INTERMEDIATE_PORT我用来访问我的 RPi/中间人的端口(在我的情况下是 443),
-L表示我们正在从本地转发端口
-N,以防止打开 shell 登录INTERMEDIATE_HOST

例子:

ssh -L 8080:ftp.host.com:7685 [email protected] -p 443 -N

这将必须保持运行,因此您需要在另一个窗口中执行以下操作(或者您可以使用-f,但您必须手动使用kill来停止代理,请参阅这个问题

然后使用 SSH 连接到 REMOTE_HOST

ssh -p LOCAL_PORT TARGET_USERNAME@localhost

或者,在我的情况下,使用 SSHFS 挂载 SFTP

sshfs -p LOCAL_HOST TARGET_USERNAME@localhost:/TARGET_PATH LOCAL_PATH

其中:
TARGET_USERNAME是我主机的用户名,是
TARGET_PATHFTP 服务需要使用的路径,
LOCAL_PATH是本地机器上挂载 FTP 的路径

非常感谢您的任何反馈!

相关内容