Назад | Перейти на главную страницу

Windows FTP через SSH

У нас есть довольно много скриптов, которые используются для загрузки и скачивания файлов у поставщика в Интернете с использованием поставляемой Windows. ftp.exe. Это прокси-сервер через SideWinder и FTP для поставщика, однако они поддерживают SFTP.

Мы используем ftp -s:filename который Задает текстовый файл, содержащий команды FTP; команды будут автоматически запускаться после запуска FTP.

ftp -n -s:dir\filename.ftp proxy.example.com

Что мы хотели бы сделать, это туннелировать это через поставляемую Windows ssh.exe чтобы мы могли удалить прокси-сервер SideWinder и продолжать использовать существующий filename файлы для команд FTP.

Возможно ли это с помощью прилагаемой Windows? ssh.exe и ftp.exe а какая будет конфигурация?

Я знаю, что существуют бесплатные программы SFTP. Мы пытаемся добиться этого с минимальными изменениями в существующей системе. Надеюсь, это так же просто, как SSH-соединение в скрипте до FTP-соединения и операций.

Я знаю, что это не тот ответ, который вам нужен, но я настоятельно рекомендую перейти на SFTP.

Прежде всего, SFTP - это другой протокол, это не просто FTP через туннель SSH. Таким образом, проксирование ftp.exe через ssh.exe не будет работать, если вы не хотите получить доступ к FTP-серверу за туннелем SSH.

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

SFTP это не совсем то же самое, что просто туннелирование FTP внутри SSH, на самом деле это расширение к протоколу SSH.

В теория, FTP-соединение с хостом мог туннелировать через отдельный SSH туннель. Для этого вы должны сначала установить туннельное сетевое соединение с сервером с ssh.exe а затем используйте существующие команды для ftp.exe для передачи файлов. Однако это сделало бы систему довольно сложной.

Я бы рекомендовал использовать SFTP-клиент вместо. Таким образом, безопасный перенос файлов может быть выполнен с помощью одной команды. Однако существующие текстовые файлы для команд FTP могут потребовать некоторого обновления, поскольку не все команды FTP одинаковы для SFTP.

Доступно несколько сторонних SFTP-клиентов, а в последних версиях Windows даже есть OpenSSH-клиент в качестве дополнительная функция.

Если вы не против использовать SSH ключи для аутентификации я бы просто использовал встроенный OpenSSH Клиент SFTP:

sftp.exe -b sftp-commands.txt example.com

Если использование ключей SSH невозможно, другой популярный клиент - WinSCP, который также поддерживает аутентификацию по паролю. Есть даже руководство для преобразования старых ftp.exe пакетные команды для WinSCP и SFTP.

Кроме того, даже если сервер поставщика поддерживает SFTP это не обязательно означает, что он также поддерживает все SSH функции. Хотя SFTP использует SSH в качестве основного протокола, многие провайдеры SFTP ограничивают SSH только использованием SFTP из-за причины безопасности. Это могло бы фактически исключить использование отдельного SSH-туннелирования для FTP.