У нас есть довольно много скриптов, которые используются для загрузки и скачивания файлов у поставщика в Интернете с использованием поставляемой 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.