Я хочу подключиться к FTP с помощью PHP для загрузки сгенерированных отчетов. Согласно удаленному серверу, FTP должен быть в АКТИВНОМ режиме.
это мой код:
ini_set('display_errors', '1');
error_reporting(E_ALL);
$conn_id = ftp_connect('myftpserver.com', 21);
if($conn_id)
{
// login with username and password
$login_result = ftp_login($conn_id, 'mysuer', 'password');
$passive = ftp_pasv($conn_id,FALSE);
echo "is active?<br/>";
var_dump($passive);
echo 'Login Result:';
var_dump($login_result);
$files_list = ftp_nlist($conn_id, '/MyFolder/');
echo "<br/>files list ";
var_dump($files_list);
}
else
{
var_dump('Unable to connect to FTP Server');
}
Когда я запускаю его с локального компьютера или обычного общего сервера, я могу получить список, но не могу запустить скрипт из своего экземпляра AWS AMI. Для тестирования я даже открыл весь входящий трафик. Все еще не повезло. Кроме того, дело в том, что если я попытаюсь с некоторыми другими деталями FTP, я смогу получить ответ ftp_nlist
, Но не для этого. Я попробовал это на 3 экземплярах AWS до сих пор. Дали тот же результат.
Все, что я могу сказать, что это где-то проблема в моей группе безопасности сервера / брандмауэре. Но не в состоянии понять это. Пожалуйста помоги.
Ответ я получаю с сервера:
is active
bool(true)
Login Result:bool(true)
files list bool(false)
Использование активного режима FTP проблематично с группами безопасности AWS.
Для работы в активном режиме вам нужно будет открыть все входящие порты выше 1023. Если ваш клиент поддерживает ограничение диапазона, сделайте это. Вам также необходимо открыть как порт 20, так и порт 21 входящий и исходящий.
Проблема в том, что клиент FTP выбирает порт, который он будет прослушивать. Затем FTP-клиент информирует FTP-сервер об этом номере порта. Затем FTP-сервер подключается к этому порту. Это идет вразрез с обычными проектами AWS Security Group, означающими, что открываются только определенные порты Вы можете проверить это, временно открыв все порты, протестировав свой FTP-клиент и затем закрыв все порты.
Активный режим небезопасен для клиента FTP. Пассивный режим небезопасен для FTP-сервера (но лучший выбор).
ПРИМЕЧАНИЕ. Часто меняйте свои учетные данные FTP. Ваш логин и пароль отправляются в открытом виде и не зашифрованы.
FTP — это устаревшая технология, которая все еще очень популярна, и ее следует хранить на чердаке.
Других решений пока нет …