Как создать активное FTP-соединение через SSH-туннель с помощью библиотеки Chilkat - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь использовать 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);

1 Ответ

0 голосов
/ 18 мая 2019

Вы бы использовали CkSshTunnel в режиме динамической переадресации портов, чтобы CkSshTunnel действовал как прокси SOCKS5 с точки зрения $ ftp. Например, посмотрите это:

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

...