Попытка создать FTP-туннель через SSH

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

Реализация первых двух не должна быть слишком плохой со сторонними библиотеками JAVA. Проблема, с которой я столкнулся, связана с третьим вариантом. Похоже, единственный способ сделать это - туннелировать FTP через SSH.

Поскольку я довольно неопытен в этом вопросе, интересно, есть ли у кого-нибудь полезные предложения. Это можно сделать с помощью надежной библиотеки JAVA (предпочтительно) или другого инструмента, который я просто называю отдельным процессом внутри программы.

Благодарность


person Anonymous    schedule 22.09.2011    source источник


Ответы (1)


Вы можете использовать Apache Commons VFS для загрузки и скачивания файлов. Есть FTP и FTPS. Единственное предварительное условие - в вашей удаленной системе должен быть запущен FTP-сервер. Вам не нужно вызывать какой-то внешний процесс. Просто заставьте ваше собственное приложение делать всю работу. Не забывайте быть осторожными с брандмауэрами.

При использовании FTPS гарантируется шифрование только сеанса управления. Данные передаются по обычному FTP. Зашифрован он или нет, решать вам. Вы можете использовать команды PROT и CDC для управления шифрованием.

person Costis Aivalis    schedule 22.09.2011
comment
Спасибо за ваш ответ. Я заглянул в Apache Commons, и, возможно, вы правы в том, что он может делать то, что я пытаюсь сделать. Однако, похоже, он поддерживает только FTP и FTPS, как вы упомянули. FTP полностью не зашифрован, тогда как FTPS имеет зашифрованную аутентификацию и передачу данных. Мне нужно среднее решение, в котором аутентификация зашифрована, но после этого фактическая передача данных для этого одного сеанса не зашифрована. Мне интересно, предлагает ли сам Apache Commons эту возможность, или мне нужно сделать что-то дополнительное или что-то еще для этого. - person Anonymous; 23.09.2011