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

  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, если это поможет.

1 ответ1

2

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

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

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

$ ssh user@remote wget -O - ftp://host/file > file

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .