【问题标题】:How to create Active FTP Connection through SSH Tunnel using Chilkat library如何使用 Chilkat 库通过 SSH 隧道创建活动 FTP 连接
【发布时间】:2019-05-18 22:00:59
【问题描述】:

我正在尝试使用 SSH 隧道(使用 Chilkat 库 CKSshTunnel)连接到远程服务器,该远程服务器能够访问目标 FTP 服务器。 FTP 服务器需要主动 FTP 连接,而不是被动连接。我知道服务器将始终使用端口 20 传输数据。

是否可以建立一个 SSH 隧道,然后使用带有代理设置的 CKFTP2 来打开一个活动的 FTP 连接?我认为 Active 连接意味着 FTP 客户端必须打开一个接收数据端口。它可以通过 Chilkat SSH 隧道做到这一点吗?

我能够建立隧道连接,并打开与目标 FTP 服务器的 FTP 连接并看到初始问候语,但从那里连接超时。

“读取 FTP 控制通道回复失败。”

#  Connect to an SSH server and establish the SSH tunnel:
my $tunnel = chilkat::CkSshTunnel->new();
$success = $tunnel->Connect('192.168.1.1',22);
    if ($success != 1) { print $tunnel->lastErrorText() . "\r\n"; exit;}
$ftp = chilkat::CkFtp2->new();
$ftp->put_Hostname("10.100.1.1");
$ftp->put_Username("anonymous");
$ftp->put_Passive(0);

$ftp->put_ActivePortRangeStart(20); # data port
$ftp->put_ActivePortRangeEnd(20);  # data port
$ftp->put_ForcePortIpAddress('192.168.1.1');

$ftp->put_SocksHostname('127.0.0.1'); # connect to local side of the tunnel
$ftp->put_SocksPort(1080);
$ftp->put_SocksUsername("secret");
$ftp->put_SocksPassword("secret");
$ftp->put_SocksVersion(5);

【问题讨论】:

  • 我在 chilkat 的文档中搜索了一些,但似乎它们没有提供任何进一步的 ssh 隧道端口转发功能。所以,与其陷入此类错误,不如使用Net::SSH::Tunnel 之类的包装器,有多种方法可以解决您的问题

标签: perl chilkat


【解决方案1】:

您将在动态端口转发模式下使用 CkSshTunnel,以便从 $ftp 的角度来看,CkSshTunnel 充当 SOCKS5 代理。例如,看这个:

https://www.example-code.com/perl/ftp_sshTunnel.asp

【讨论】:

  • 感谢这个例子马特。这实际上是我在建模之后。这是否适用于客户端必须打开附加数据端口的活动 FTP?在测试中,连接本身可以工作,但数据端口似乎是个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 2018-10-06
  • 2016-02-04
  • 2014-07-20
  • 2014-09-17
  • 2013-04-05
  • 2021-11-13
相关资源
最近更新 更多