从家中通过隧道传输FTP连接,服务器仅接受本地IP


11

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

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

我知道PuTTY可以通过ssh进行端口转发,但我不确定如何使用它。

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


通过SOCKS代理连接进行上传和下载没有本质上的区别。最大的不同是,与下载(传入)性能相比,您的家庭Internet连接可能具有较差的上载(传出)性能。我们可能需要更多日志才能对其进行诊断。
EightBitTony

我得出的结论是,我可能会完全解决另一个问题,并将致力于创建一个解决该特定问题的新问题。非常感谢您对EightBitTony的帮助!
本·雅各布森2012年

可能想使用与此处相同的凭据注册您的Server Fault帐户,以便收回此问题@ben
random

Answers:


13

使用SOCKS代理。

腻子窗口

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

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

这是FileZilla选项的外观,

在此处输入图片说明

当您将目标用于FTP连接时,请使用IP地址而不是主机名,因为DNS解析可能仍会在本地进行,并且您不希望这样做。

整个过程是安全且不可见的-看起来像是到网络上其他任何对象的基本SSH连接。

注意:如果要从命令行执行此操作,可以使用PuTTY plink.exe执行以下操作,

plink -ssh -D 9090 you@your.work.laptop.example

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


我喜欢这种方式,比我的回答要多一点。您可以在filezilla中的“通用代理”下设置SOCKS代理,并记住在“被动模式”下使用它。
菲利普·库林

2

首先,使用SCP更容易/可以说更好。由于您拥有SSH,因此也具有SCP访问权限是很常见的。但是我不知道你的人际关系网...

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

其次,将您的FTP客户端在活动模式下使用的端口数限制为几个。少于10就好了。这就是为什么。

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

那应该使它工作


2

以下是使用FileZilla或Nautilus File Manager 浏览内部服务器(位于NAT之后)的文件系统的方法-使用SFTP(TCP端口22上的SSH会话),通过网关服务器(位于NAT之外):

  1. 首先在Terminal中运行:

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

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

    在FileZilla中:

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

或在鹦鹉螺中:

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

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


在此处输入图片说明

注意:如您所见,不需要在Putty或FileZilla中设置SOCKS代理:)


谢谢!那正是我想要的!
lorenzo-s
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.