ftp файлы через промежуточный джамп-сервер

508
Rayniery

В моей компании мы получаем доступ к нашим удаленным электронным устройствам через сервер переходов. Когда нам нужно загрузить файлы с устройств, мы делаем следующее:

  1. ssh jump.server.com
  2. wget ftp // device_ip / filepath (загружает файл на сервер переходов)
  3. scp сервер перехода с локальной машины, чтобы получить файл.

Я пытаюсь упростить это с помощью переадресации порта ssh, чтобы иметь возможность загружать файл напрямую с удаленных устройств на нашу машину. Я последовал за этим ответом :

ssh -L 9000:device_ip:21 jump.server.com wget ftp://localhost:9000/filepath 

Но я получаю следующую ошибку:

227 Entering Passive Mode (10,192,1,16,19,129). trying to connect to 10.192.1.16 port 4993 Closed fd 4 Closed fd 3 couldn't connect to ipaddress port 4993: Connection timed out Giving up. 

Проблема не в пассивном режиме, который использует wget, потому что он работает при использовании старого метода.

Любые предложения в том, что может быть причиной проблемы? На наших компьютерах работает Ubuntu, если это поможет.

0

1 ответ на вопрос

2
Steffen Ullrich

FTP использует порт 21 для управляющего соединения, но затем для фактической передачи данных нужны дополнительные соединения, использующие разные, динамически согласованные, порты. Это делает невозможным простое туннелирование FTP через одно TCP-соединение, независимо от того, активен он или пассивен.

Если ваш FTP-клиент поддерживает протокол SOCKS, вы можете попытаться настроить ssh как SOCKS-сервер с этой -Dопцией, а затем использовать его в пассивном режиме FTP.

Другой вариант - не войти в систему, получить файл и передать его обратно, а сделать все сразу:

$ ssh user@remote wget -O - ftp://host/file > file 
Кроме того, процедура согласования FTP [включает IP-адрес] (https://mywiki.wooledge.org/FtpMustDie#You.27re_Firewalled_Too.3F_Oh.2C_Crap.21). Туннелирование делает адрес не подходящим. Kamil Maciorowski 5 лет назад 1

Похожие вопросы