从家里建立隧道 FTP 连接,服务器仅接受本地 IP

从家里建立隧道 FTP 连接,服务器仅接受本地 IP

我需要在工作时访问 FTP 服务器,但该服务器只接受本地 IP。我无法从家用机器访问它。我能够通过 PuTTY ssh 进入我的 Unix 工作机器,并从那里成功打开到 FTP 服务器的控制台 FTP 连接。

我可以解决这个问题,但我不想这样做,因为这对我来说非常麻烦。我更愿意通过 PuTTY 在工作机器上建立 FTP 连接隧道,这样我就可以使用我选择的 FTP 客户端 FileZilla 来实现我在服务器上的 FTP 需求。当然这是通过端口 21 进行的。

我知道 PuTTY 能够通过 ssh 进行端口转发,但我不知道如何使用它。

主页 -> 工作 -> 服务器。

答案1

使用 SOCKS 代理。

PuTTY 窗口

源端口现在(本地)是 SOCKS 代理。配置 FileZilla 以将其用作 SOCKS 代理(见下文)。它将通过该端口打开与您通过 ssh 连接的主机(您的工作机器)的连接,然后从那里连接到您为其提供的任何 IP 地址。适用于支持 SOCKS 的任何设备,包括 FTP。

PuTTY 配置的其余部分保持不变 - 配置端口(如图所示),然后通过 SSH 将该 PuTTY 会话连接到您的工作机器。

FileZilla 选项应如下所示:

在此处输入图片描述

当您输入 FTP 连接的目标时,请使用 IP 地址而不是主机名,因为 DNS 解析可能仍在本地进行,而您并不希望出现这种情况。

整个过程是安全且不可见的 - 它看起来就像与网络上任何其他东西的基本 SSH 连接一样。

注意:如果您想从命令行执行此操作,您可以使用 PuTTYplink.exe执行以下操作,

plink -ssh -D 9090 [email protected]

无需创建 PuTTY 配置文件或使用 GUI 即可实现相同的功能。

答案2

以下是如何浏览文件系统内部的服务器(NAT后面),使用FileZilla或Nautilus文件管理器 - 使用安全FTP(TCP 端口 22 上的 SSH 会话),通过网关服务器(NAT之外):

  1. 首次在终端运行:

sudo ssh -L 9090:{内部服务器主机名或 IP}:22 root@{网关服务器主机名或 IP}

  1. 然后创建一个新的连接。

    在 FileZilla 中:

    • 主机:sftp://127.0.0.1
    • 用户名/密码:内部的服务器。
    • 端口:9090(与终端命令中的端口相同)。

或者在 Nautilus 中:

sftp://127.0.0.1:9090/,然后系统将提示您输入内部服务器凭据。

现在您应该能够浏览内部服务器文件系统。


在此处输入图片描述

注意:如你所见,它不需要设置 SOCKSPutty 中的代理和 FileZilla 中的代理:)

答案3

首先,使用 SCP 更容易/可以说是更好。由于您有 SSH,因此您通常也可以拥有 SCP 访问权限。但我不知道您的网络,所以对于这个问题...

首先,确保您的客户端设置为在主动模式下使用 FTP。我想建议使用被动模式,但您无法控制将使用哪些端口。

其次,将 FTP 客户端在主动模式下使用的端口数量限制到少数。少于 10 个就很好了。原因如下。

第三,为所有这些端口创建远程端口转发。

那应该可以让它工作

相关内容