Я пытаюсь использовать SSH-туннель (используя библиотеку Chilkat CKSshTunnel) для удаленного сервера, чтобы этот удаленный сервер мог достичь конечного FTP-сервера.FTP-сервер требует активного FTP-соединения, а не пассивного.Я знаю, что сервер всегда будет использовать порт 20 для данных.
Можно ли создать SSH-туннель, а затем использовать CKFTP2 с настройками прокси-сервера для открытия активного FTP-соединения?Я думаю, что активное соединение означает, что клиент FTP должен открыть порт приема данных.Может ли он сделать это через туннель SSH Chilkat?
Я могу установить туннельное соединение, открыть 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);